我一直在苦苦挣扎。在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.
答案 0 :(得分:2)
我提出了同样的问题并发现虽然AndroidTestCase
没有构造函数采用String
参数,但它确实有setName(String name)
方法。通过调用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;
}
}
答案 1 :(得分: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;
}