Robotium - 如何运行选择性测试用例?

时间:2011-10-14 09:09:36

标签: android robotium

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

RC

4 个答案:

答案 0 :(得分:4)

如果您正在使用Eclipse并且只想运行单个测试方法而不是整个套件或整个测试类,则只需右键单击method-name并选择“Run as ..” - > “Android JUnit测试”

答案 1 :(得分:2)

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

答案 2 :(得分: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参数添加多个值。

答案 3 :(得分: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测试运行。