我的测试类有 3 个运行三个测试用例 (test* ** ()) 的 API。当我将项目作为 JUnit 测试用例运行时,如何停止这 3 个测试用例中的一个或多个执行?基本上,如何有选择地运行同一文件中存在的测试用例?{将它们放在一个单独的类中并不是真正的解决方案!!:)}
RC
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"
您也可以从命令行执行此操作:
adb shell am instrument -e class com.android.demo.app.tests.FunctionTests#testCamera com.android.demo.app.tests/android.test.InstrumentationTestRunner
在此示例中,您仅在类 FunctionTests 中运行测试方法“testCamera”。您可以通过 -e 参数添加多个值。
要使用 JUnit 选择性地跳过测试用例,您可以在不想运行的测试方法上方添加 @Ignore 注释。
由于在 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 测试运行即可。