我想编写执行junit 4.8.x测试类的特定测试方法的Java代码。
例如,在junit 3.8.x中,要执行特定的测试方法,我们编写以下代码块:
TestResult res = junit.textui.TestRunner.run(junit.framework.TestSuite.createTest((Class< ? extends TestCase>)className, methodName));
在这里,className是TestCase的子类,而MethodName是在className中定义的测试方法。
它执行“ methodName”测试方法,并将结果保存在“ res”中。
同样,我也想对junit 4.8.x类执行特定的测试方法。
有人可以告诉我答案吗?
最佳答案
如果不使用TestCase,则可以将演员表删除。
在JUnit 4.10中,TestSuite.createTest(Class theClass,String name)将采用任何类。
如果我在4.10中查看TestSuite的源代码
https://github.com/KentBeck/junit/blob/master/src/main/java/junit/framework/TestSuite.java
public class TestSuite implements Test {
/**
* ...as the moon sets over the early morning Merlin, Oregon
* mountains, our intrepid adventurers type...
*/
static public Test createTest(Class<?> theClass, String name) {
Constructor<?> constructor;
try {
constructor= getTestConstructor(theClass);
} catch (NoSuchMethodException e) {
return warning("Class "+theClass.getName()+" has no public constructor TestCase(String name) or TestCase()");
}
Object test;
try {
if (constructor.getParameterTypes().length == 0) {
test= constructor.newInstance(new Object[0]);
if (test instanceof TestCase)
((TestCase) test).setName(name);
} else {
test= constructor.newInstance(new Object[]{name});
}
在此版本中,它将采用任何类型。
关于java - 如何在junit 4.8.x中执行特定的测试方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10426747/