私はこれでしばらく苦労してきました。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.