现在,我在单独的测试项目中编写android测试来测试应用程序。我编写了许多测试用例和类。现在,我想写一个testuit。运行所有测试。但它有一个例外。代码如下:
public static Test suit () {
return new TestSuiteBuilder(AllTest.class)
.includeAllPackagesUnderHere()
.build();
}
例外情况如下:
junit.framework.AssertionFailedError:在com.netqin.myproject.test.alltest.AllTest中找不到任何测试 在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 在android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1584)
有什么不对,我找不到原因。任何帮助都是值得的。
答案 0 :(得分:0)
方法includeAllPackagesUnderHere()需要能够从保存测试套件的包或任何子包(link)中提取测试。
因此,您需要创建一个单独的JUnit测试用例,它实际上在同一个包中包含您的测试方法。例如,您可能有两个文件:
1)MyTestSuite.java
package com.example.app.tests;
import junit.framework.Test;
import junit.framework.TestSuite;
import android.test.suitebuilder.TestSuiteBuilder;
public class MyTestSuite extends TestSuite {
/**
* A test suite containing all tests
*/
public static Test suit () {
return new TestSuiteBuilder(MyTestSuite.class)
.includeAllPackagesUnderHere()
.build();
}
}
注意:确保TestSuiteBuilder中的类(在本例中为MyTestSuite.class)与包含类的名称匹配,在本例中为MyTestSuite。
2)MyTestMethods.java
package com.example.app.tests;
import android.test.ActivityInstrumentationTestCase2;
public class MyTestMethods extends ActivityInstrumentationTestCase2<TheActivityThatYouAreTesting> {
public MyTestMethods() {
super("com.example.app",TheActivityThatYouAreTesting.class);
}
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testFirstTest(){
test code here
}
public void testSecondTest(){
test code here
}
}
在这种情况下,testFirstTest()和testSecondTest()将包含在您的测试套件(MyTestSuite.class)中。运行MyTestSuite.java作为Android JUnit测试现在将运行这两个测试。