私のテストクラスには、3つのテストケース(test * **())を実行する3つのAPIがあります。プロジェクトをJUnitテストケースとして実行する場合、これら3つのテストケースの1つ以上を停止して実行するにはどうすればよいですか?基本的に、同じファイルに存在するテストケースを選択的に実行するにはどうすればよいですか?{それらを別のクラスに入れることは、実際には解決策ではありません!! :)}
Rc
Eclipse を使用していて、スイート全体またはテスト クラス全体ではなく単一のテスト メソッドを実行したい場合は、メソッド名を右クリックして [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 テストとして実行するだけです。