Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用JUnit/Robotium测试的应用程序中清除静态变量?_Java_Android_Junit_Integration Testing_Robotium - Fatal编程技术网

Java 如何在使用JUnit/Robotium测试的应用程序中清除静态变量?

Java 如何在使用JUnit/Robotium测试的应用程序中清除静态变量?,java,android,junit,integration-testing,robotium,Java,Android,Junit,Integration Testing,Robotium,我正在为一个代码库编写自动测试(带有ActivityInstrumentationTestCase2的Robotium),该代码库有很多包含静态变量的遗留代码,并希望确保我们在每个测试中开始的状态相同 清除静态变量的方法是终止整个过程,然后重新启动它。这对应用程序本身很有效,但在运行测试项目时,它会导致控制台中出现“应用程序com崩溃。\uu运行检测”,并在logcat中出现以下行: 03-05 11:08:01.113: I/ActivityManager(70): Process com._

我正在为一个代码库编写自动测试(带有ActivityInstrumentationTestCase2的Robotium),该代码库有很多包含静态变量的遗留代码,并希望确保我们在每个测试中开始的状态相同

清除静态变量的方法是终止整个过程,然后重新启动它。这对应用程序本身很有效,但在运行测试项目时,它会导致控制台中出现“应用程序com崩溃。\uu运行检测”,并在logcat中出现以下行:

03-05 11:08:01.113: I/ActivityManager(70): Process com.____________ (pid 662) has died.
03-05 11:08:01.113: W/ActivityManager(70): Crash of app com.___________ running instrumentation
有人知道有没有其他方法可以清除变量(不必逐一检查)或其他方法来解决这个问题

以下是来自logcat的更多行:

03-05 11:07:59.553: D/____________(662): NEW STATE FROM SERVICE: STATE_SHUTTING_DOWN
03-05 11:07:59.613: I/TestRunner(662): finished: testLoginCorrectUserNameIncorrectPassword(com.____________.test.LoginScreenTest)
03-05 11:07:59.613: I/TestRunner(662): passed: testLoginCorrectUserNameIncorrectPassword(com.____________.test.LoginScreenTest)
03-05 11:07:59.613: I/TestRunner(662): started: testLoginIncorrectUserName(com.____________.test.LoginScreenTest)
03-05 11:07:59.643: I/ActivityManager(70): Starting: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.____________/.____________ } from pid 662
03-05 11:08:00.183: D/dalvikvm(150): GC_CONCURRENT freed 185K, 51% free 2846K/5703K, external 957K/1462K, paused 3ms+102ms
03-05 11:08:01.075: D/____________(662): NEW STATE FROM SERVICE: STATE_TERMINATED
03-05 11:08:01.083: I/Process(662): Sending signal. PID: 662 SIG: 9
03-05 11:08:01.113: I/ActivityManager(70): Process com.____________ (pid 662) has died.
03-05 11:08:01.113: W/ActivityManager(70): Crash of app com.____________ running instrumentation ComponentInfo{com.____________.test/android.test.InstrumentationTestRunner}
03-05 11:08:01.123: D/AndroidRuntime(654): Shutting down VM
03-05 11:08:01.123: I/ActivityManager(70): Force stopping package com.____________ uid=10034
03-05 11:08:01.173: D/dalvikvm(654): GC_CONCURRENT freed 117K, 71% free 300K/1024K, external 0K/0K, paused 1ms+1ms
03-05 11:08:01.173: D/jdwp(654): Got wake-up signal, bailing out of select
03-05 11:08:01.173: D/dalvikvm(654): Debugger has detached; object registry had 1 entries
03-05 11:08:01.193: I/dalvikvm(654): JNI: AttachCurrentThread (from ???.???)
03-05 11:08:01.193: I/AndroidRuntime(654): NOTE: attach of thread 'Binder Thread #3' failed
03-05 11:08:01.252: W/InputManagerService(70): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40980df8
03-05 11:08:01.372: D/dalvikvm(219): GC_EXTERNAL_ALLOC freed 14K, 50% free 2868K/5639K, external 4235K/5259K, paused 44ms
感谢你的帮助


Tord将有所帮助,但它无法解决您对
一个接一个的

的要求。很遗憾,我认为您在这里会遇到麻烦,我不相信有一种简单的方法可以做到这一点,因为在使用检测时,您的测试和应用程序共享同一个过程,因此您不能使用当前方法来提供所需的结果,除非您一次运行一个测试。您可以使用adb instrument命令执行此操作,并单独运行每个测试,然后重新启动该过程,这将使您的测试变慢(可能由于默认的测试运行程序包搜索而非常慢,但您可以更改此操作,以便只扫描某些包进行测试)


第二种选择是,按照您的想法,将静态设置为默认值,这将总是很痛苦的,因为没有自动的方法可以知道哪些静态需要重置,哪些需要保持原状。

感谢您的回复。我将等待开发人员清除静态变量,以便我们能够以更好的方式关闭应用程序。同时,我将简单地创建一个包含所有内容的大型测试,但稍后可以轻松地作为不同的测试运行。