我已经为此苦苦挣扎了一段时间。在 JUnit/Android 中创建测试套件时,我可以执行以下操作:
- 添加与套件存在于同一包中的所有测试(在所有类中)
- 添加包含测试方法的特定类
但是,我完全无法执行以下操作:
- 将来自特定类的特定测试方法添加到测试套件。
现在,我明白这应该是可能的,因为有无数例子证明了这一点。
它应该是这样工作的:
包含测试方法的测试类:
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.
最佳答案
我遇到了同样的问题并发现,虽然 AndroidTestCase
没有采用 String
参数的构造函数,但它确实有一个 setName(String名称)
方法。通过调用setName
方法,您可以将单独的方法添加到测试用例中。
使用示例中的代码,您的测试套件可能如下所示:
import junit.framework.TestSuite;
public class ProjectTestSuite_SomeTests extends TestSuite {
public static Test suite () {
TestSuite suite = new TestSuite("ArithmeticsTests");
ArithmeticsTests arithmeticsTests = new ArithmeticsTests();
arithmeticsTests.setName("testAddNumbers");
suite.addTest(arithmeticsTests);
ArithmeticsTests2 arithmeticsTest2 = new ArithmeticsTests2();
arithmeticsTest2.setName("testSubtractNumbers");
suite.addTest(arithmeticsTest2);
return suite;
}
}
关于Android 和 JUnit : How to add individual tests to test suite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317687/