2

现在,我在单独的测试项目中编写 android 测试代码来测试应用程序。我编写了许多测试用例和类。现在,我想写一个测试服。运行所有测试。但它有一个例外。代码如下:

 public static Test suit () {
        return new TestSuiteBuilder(AllTest.class)
                  .includeAllPackagesUnderHere()
                  .build();
    }

例外情况如下:

junit.framework.AssertionFailedError:在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 的 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 的 com.netqin.myproject.test.alltest.AllTest 中找不到测试) 在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)

出了什么问题,我找不到原因。任何帮助都是感激的。

4

1 回答 1

0

includeAllPackagesUnderHere() 方法需要能够从保存测试套件的包或任何子包(链接)中提取测试。

因此,您需要创建一个单独的 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 测试运行现在将同时运行这两个测试。

于 2013-02-22T04:00:28.723 回答