我有一个Android应用程序,我正在进行单元测试。我有4个测试类,每个测试类都有多种测试方法。我从一个测试套件同时运行它们。我在模拟器上遇到了一个问题,在运行测试的过程中,测试会冻结。我切换到使用实际设备,问题就消失了。Android Junit测试冻结
快进了几个星期,我在我的设备上运行测试时没有遇到同样的问题。过去几天,我一直在Google上寻找解决方案,但没有发现任何帮助。
的问题
当我尝试运行所有测试的测试最终会冻结。冻结我的意思是测试本身冻结。我看到一个解决方案,它可能是电话或日食。我重新启动了手机,更新了eclipse中的所有内容,包括eclipse本身。我试图改变看法,看看也许日食视图不刷新,但没有任何帮助。我也尝试使用junit v4库而不是v3。
如果我单独运行测试方法,它们都会运行并通过。只有当我从测试套件中运行它们时,它们才会失败。
日志
我查了日志,这就是我得到:
03-13 12:11:04.526: I/TestRunner(23175): started: testCheckShowDialogEnabled(com.package.name.MainActivityTest)
后面还有没有别的在日志中。
在设备上
该应用程序已完成并从屏幕上删除。它在下次测试开始时不会重新打开。
代码
这是我认为可能相关的代码。如果你需要更多的代码,请让我知道。
public class AllTests extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(MainActivityTest.class);
suite.addTestSuite(DatabaseHandlerTest.class);
suite.addTestSuite(ClassOneTest.class);
suite.addTestSuite(AnotherActivityTest.class);
return suite;
}
}
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
public MainActivityTest() {
super("com.package.name", MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
mMainActivity = getActivity();
mSolo = new Solo(getInstrumentation(), mMainActivity);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
mMainActivity = null;
}
// all the test methods
}
我所有的测试类实现setup()
和tearDown()
类似。
任何人都知道为什么我的测试保持冻结?任何帮助或建议非常感谢。
看看这个https://groups.google.com/forum/?fromgroups=#!topic/robotium-developers/5i3YoyYFpWE – smk 2013-03-13 17:41:58
我在我的tearDown()中试过这个,现在eclipse中的JUnit视图出现仍然在第二个测试方法被冻结。但是现在在大约一秒的时间内,我得到了一个开始的测试,完成了测试,并通过了所有测试方法的测试日志条目。 – 2013-03-13 19:31:53
如果测试真的可以很快运行,我可以相信日志,但是我从来没有让这些测试快速运行。通常完成它们需要几分钟的时间 – 2013-03-13 19:34:04