为什么我不能在Android测试项目中运行所有测试?

时间:2012-11-26 06:38:43

标签: junit android-testing

现在,我在单独的测试项目中编写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)

有什么不对,我找不到原因。任何帮助都是值得的。

1 个答案:

答案 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测试现在将运行这两个测试。