1

テストが配置されているパッケージがいくつかあります。

  1. com.example.tests.common-携帯電話とタブレットの両方
  2. com.example.tests.phones-電話のみ
  3. com.example.tests.tablets-タブレットのみ

今度は電話のテストを実行するために、からのクラスcommonphonesパッケージにあるテストを実行する必要があります-2回実行します。タブレットについても同じです。

タブレット/電話のすべてのテストを一度に実行する必要があります。TestSuiteのは私には機能しません:

 Class[] testClasses = { MathTest.class, AnotherTest.class }
 TestSuite suite= new TestSuite(testClasses);

エラーでは機能しません。そのようなコンストラクターはありませんTestSuite

したがって、質問は次のとおりです。1.例のように機能しなかった理由。

  1. 必要なクラス/パッケージを1つにまとめる他の方法はありますsuiteか?

どうもありがとうございます。

4

3 に答える 3

2

通常は、パッケージ名にプレフィックスをtest.com.example.phones追加して、 のようなテスト スイート パッケージに名前を付ける方が適切です。test.これにより、すべてのテストを一度に非常に簡単に実行、再配置、または移動できます。デバイス固有のテストに注意することが重要な場合は、別のアプローチが と のようtest.phones.com.exampleになりtest.tablets.com.exampleます。

テスト スイートを使用することもできますが、これらは冗長であることがよくあります。最も頻繁に行われるテストの種類は、テスト対象のパッケージのすべてのテストを実行することと、利用可能なすべてのテストを実行することです。テスト パッケージがメイン パッケージを反映している場合、そのような実行は、フォルダー/パッケージ内のすべてのテストを実行する機能を提供する IDE から簡単に起動できます (Eclipse で右クリックして [Android テストとして実行] を選択します)。また、クラウドでの自動ビルド中は、通常、すべてのテストをとにかく実行する必要があります。

さらに多くのテストがある場合は、別のテスト プロジェクトを作成することも悪くありません。

于 2013-02-13T18:05:47.267 に答える
1
  1. TestSuite(Class[])のコンストラクターはありません。
  2. 可変引数リストを使用できます。

    TestSuite suite = new TestSuite(MathTest.class, AnotherTest.class);
    
  3. または、以前に行ったような配列ですが、文字列で識別する必要があります。

    TestSuite suite = new TestSuite({MathTest.class, AnotherTest.class}, "Example");
    
于 2013-02-13T18:06:57.143 に答える
0

私が本当に探していたのはTestSuiteBuilderです。

これが私が今持っているものです:

public class TabletAllTests extends TestSuite {

    public static Test suite() {

        TestSuiteBuilder suiteBuilder = new TestSuiteBuilder(PhoneAllTests.class);
        suiteBuilder.includePackages("<my_package>.test.common");
        suiteBuilder.includePackages("<my_package>.test.tablet");

        return suiteBuilder.build();
    }
}

そして同じPhoneAllTests

于 2013-02-13T18:36:02.810 に答える