0

私のテストクラスには、3つのテストケース(test * **())を実行する3つのAPIがあります。プロジェクトをJUnitテストケースとして実行する場合、これら3つのテストケースの1つ以上を停止して実行するにはどうすればよいですか?基本的に、同じファイルに存在するテストケースを選択的に実行するにはどうすればよいですか?{それらを別のクラスに入れることは、実際には解決策ではありません!! :)}

Rc

4

4 に答える 4

4

Eclipse を使用していて、スイート全体またはテスト クラス全体ではなく単一のテスト メソッドを実行したい場合は、メソッド名を右クリックして [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 に答える