0

我的测试类有 3 个运行三个测试用例 (test* ** ()) 的 API。当我将项目作为 JUnit 测试用例运行时,如何停止这 3 个测试用例中的一个或多个执行?基本上,如何有选择地运行同一文件中存在的测试用例?{将它们放在一个单独的类中并不是真正的解决方案!!:)}

RC

4

4 回答 4

4

If you are using Eclipse and just want to run a single test method instead of the whole suite or the whole test class, you just right click the method-name and choose "Run as.." -> "Android JUnit Test"

于 2011-10-14T09:45:07.100 回答
2

您也可以从命令行执行此操作:

adb shell am instrument -e class com.android.demo.app.tests.FunctionTests#testCamera com.android.demo.app.tests/android.test.InstrumentationTestRunner

在此示例中,您仅在类 FunctionTests 中运行测试方法“testCamera”。您可以通过 -e 参数添加多个值。

于 2012-07-29T06:46:23.187 回答
2

要使用 JUnit 选择性地跳过测试用例,您可以在不想运行的测试方法上方添加 @Ignore 注释。

于 2011-10-14T09:40:08.533 回答
0

由于在 JUnit 3 中没有 @Ignore 注释,我必须找出一种解决方法来忽略我的测试套件中长时间运行的活动/仪器测试用例,以便能够运行单元测试:

public class FastTestSuite extends TestSuite {

    public static Test suite() {

        // get the list of all the tests using the default testSuiteBuilder
        TestSuiteBuilder b = new TestSuiteBuilder(FastTestSuite.class);
        b.includePackages("com.your.package.name");
        TestSuite allTest = b.build();


        // select the tests that are NOT subclassing InstrumentationTestCase
        TestSuite selectedTests = new TestSuite();

        for (Test test : Collections.list(allTest.tests())) {

            if (test instanceof TestSuite) {
                TestSuite suite = (TestSuite) test;
                String classname = suite.getName();

                try {
                    Class<?> clazz = Class.forName(classname);
                    if (!InstrumentationTestCase.class.isAssignableFrom(clazz)) {
                        selectedTests.addTest(test);
                    }
                } catch (Exception e) {
                    continue;
                }   
            }   
        }   
        return selectedTests;
    }   
}

只需将此测试套件作为 Android JUnit 测试运行即可。

于 2014-07-25T12:22:04.520 回答