4

私はこれでしばらく苦労してきました。JUnit/Android でテスト スイートを作成する場合、次のことができます。

  • スイートと同じパッケージに存在するすべてのテスト (すべてのクラス) を追加します
  • testMethods を含む特定のクラスを追加する

ただし、次のことは完全にできません。

  • 特定のクラスから特定の testMethod をテスト スイートに追加します。

今、これを示す無数の例があるので、これが可能であるべきであることを理解しています.

これがどのように機能するかです:

テストメソッドを含むテストクラス:

import com.frank.android.lookup.SomeClass;
import android.test.AndroidTestCase;

public class ArithmeticsTests extends AndroidTestCase {
    SomeClass sctest;

    protected void setUp () throws Exception {
        sctest = new SomeClass();
        super.setUp();
    }

    public void testAddNumbers () {
        assertEquals(9, sctest.addNumbers(3, 6));
    }

    public void testSubtractNumbers () {
        assertEquals(2, sctest.subtractNumbers(6, 4));
    }

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

テスト スイート クラスは次のとおりです。

import junit.framework.TestSuite;

public class ProjectTestSuite_SomeTests extends TestSuite {

    public static Test suite () {
        TestSuite suite = new TestSuite("ArithmeticsTests");
        suite.addTest(new ArithmeticsTests("testAddNumbers"));
        suite.addTest(new ArithmeticsTests2("testSubtractNumbers"));

        return suite;
    }
}

ここで、個々のテスト メソッドを追加しようとした 2 行で、次のエラーが発生します。

The constructor ArithmeticsTests(String) is undefined

さて、私は長い間見回してきましたが、これについての説明は見つかりません。私がやろうとしていることを理解していないので、何かが足りないようです。それが不平を言う「文字列」は、実際にはメソッドの名前です-クラスのコンストラクターに文字列を渡そうとしていません-クラスのメソッドをテストスイートに追加しようとしています。

ここでは、Android SDK に含まれている JUnit バージョンを使用していますが、それに関連するものは他にインストールしていません。何か足りないものはありますか?(明らかにありますが、少し何ですか?)

編集:

ArithmeticsTests クラスにコンストラクターを追加しました。

public ArithmeticsTests (String s) {}

これで、上記のエラーはなくなりました。

ただし、テスト スイートを実行すると、次のエラーが発生します。

testSuiteCreationFailed
....
Caused by: java.lang.NullPointerException: Method name must not be null.
4

2 に答える 2

1

これは私にとってはうまくいきました。

public static TestSuite suite() {
    final TestSuite t = new TestSuite();
    t.addTest(TestSuite.createTest(TestExampleClass1.class, "test1"));
    t.addTest(TestSuite.createTest(TestExampleClass2.class, "test2"));
    t.addTest(TestSuite.createTest(TestExampleClass3.class, "test2"));

    return t;
}
于 2014-03-31T10:09:49.920 に答える