1

我想编写执行 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 类执行特定的测试方法。谁能告诉我答案...

4

1 回答 1

0

如果您不使用 TestCase,则可以将转换删除到 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});
        }

在这个版本中,它将采用任何类型。

于 2012-05-03T07:55:53.957 回答