我想编写执行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/

10-14 10:10