2

今、アプリケーションをテストするために、別のテスト プロジェクトで Android テストをコーディングします。多くのテストケースとクラスをコーディングしました。今、私はテストスーツを書きたいです。すべてのテストを実行しますが、例外があります。コードは次のとおりです。

 public static Test suit () {
        return new TestSuiteBuilder(AllTest.class)
                  .includeAllPackagesUnderHere()
                  .build();
    }

例外は次のとおりです。

junit.framework.AssertionFailedError: com.netqin.myproject.test.alltest.AllTest にテストが見つかりません android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) で android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) ) android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) で android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584) で

何が間違っているのか、私は理由を見つけることができません。どんな助けでも感謝しています。

4

1 に答える 1

0

メソッド includeAllPackagesUnderHere() は、テスト スイートが保存されているパッケージまたはサブパッケージ (リンク) からテストを取得できる必要があります。

そのため、実際に同じパッケージにテスト メソッドを含む別の JUnit テスト ケースを作成する必要があります。たとえば、次の 2 つのファイルがあるとします。

1) MyTestSuite.java

package com.example.app.tests;

import junit.framework.Test;
import junit.framework.TestSuite;
import android.test.suitebuilder.TestSuiteBuilder;

public class MyTestSuite extends TestSuite {

    /**
     * A test suite containing all tests
     */
    public static Test suit () {
        return new TestSuiteBuilder(MyTestSuite.class)
                  .includeAllPackagesUnderHere()
                  .build();
    }

}

注: TestSuiteBuilder 内のクラス (この場合は MyTestSuite.class) が、含まれているクラス (この場合は MyTestSuite) の名前と一致していることを確認してください。

2) MyTestMethods.java

package com.example.app.tests;

import android.test.ActivityInstrumentationTestCase2;

public class MyTestMethods extends ActivityInstrumentationTestCase2<TheActivityThatYouAreTesting> {

    public MyTestMethods() {
        super("com.example.app",TheActivityThatYouAreTesting.class);
    }

    protected void setUp() throws Exception {
        super.setUp();
    }

    protected void tearDown() throws Exception {
        super.tearDown();
    }

    public void testFirstTest(){
        test code here
    }

    public void testSecondTest(){
        test code here
    }
}

この場合、testFirstTest() と testSecondTest() がテスト スイート (MyTestSuite.class) に含まれます。MyTestSuite.java を Android JUnit テストとして実行すると、両方のテストが実行されるようになりました。

于 2013-02-22T04:00:28.723 に答える