我已经为此苦苦挣扎了一段时间。在 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;
}
}
现在,我尝试添加单个测试方法的两行导致此错误:
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.