繁体   English   中英

在JUnit测试用例中找不到测试方法

[英]Cannot find test method in JUnit test case

我目前正在开发一个程序,该程序可以在外部类上执行JUnit测试用例。 这些外部课程由学生发送,我们希望对其进行评估。

我有以下测试案例

import static org.junit.Assert.*;
import org.junit.Test;

public class Task1Test {

    @Test
    public void testAdd() {
        Task1 t = new Task1();
        int a = 5;
        int b = 11;
        assertEquals("Wrong add result", a+b, t.add(a,b));
    }
}

然后用以下命令编译它: $ javac -cp .:../lib/junit/junit-4.11.jar Task1Test.java

Task1将是一个学生的班级,但是现在它只是一个带有add方法的示例班级,它将返回错误的结果。 该文件Task1.java位于同一文件夹中Task1Test.java

在我的程序中,我加载了测试用例类,并尝试使用JUnitCore运行它:

String testsPath = "/path/to/classes";
String junitJar = "/path/to/junit-4.11.jar"
URL taskUrl = new File(testsPath).toURI().toURL();
URL[] urls = new URL[] {taskUrl,junitJar};

@SuppressWarnings("resource")
ClassLoader loader = new URLClassLoader(urls);
Class<?> clazz = loader.loadClass(task);

Result res = JUnitCore.runClasses(clazz);

if(!res.wasSuccessful()) {
    for(Failure f : res.getFailures()) {
        System.out.println(f.toString());
    }
}

但是,它不能按预期方式工作。 当我运行此代码时,我收到以下消息: initializationError(Task1Test): No runnable methods

当我使用反射检查加载的类时,我可以看到方法testAdd没有注释(即method.getAnnotation(org.junit.Test.class)返回null )。

有人有主意吗? 我忘了编译器开关或其他东西吗?

我正在使用Java 1.7.0_11 ,并且代码在Glassfish 3.1.2.2上的Web应用程序中运行

编辑:

我可以使用以下命令从命令行运行测试用例: $ java -cp .:../../code/lib/junit/junit-4.11.jar:../../code/lib/junit/hamcrest-core-1.3.jar org.junit.runner.JUnitCore Task1Test

我从这个答案中找到了一个解决方案,我没有设置父类加载器,这似乎引起了麻烦。 按照其他答案中所述进行设置,现在可以执行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM