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

标签 java testing junit glassfish-3

我目前正在开发一个可以在外部类上执行 JUnit 测试用例的程序。这些外部类(class)是由学生送来的,我们想对其进行评估。

我有以下测试用例

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 将是一个学生的类(class),但目前它只是一个带有 add 方法的示例类(class),该方法将返回错误结果。文件 Task1.javaTask1Test.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):没有可运行的方法

当我使用反射查看加载的类时,我可以看到方法 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

最佳答案

我从 this answer 找到了解决方案 我没有设置父类加载器,这似乎引起了麻烦。按照另一个答案中所说的那样设置它现在执行测试。

关于java - 在 JUnit 测试用例中找不到测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586612/

相关文章:

java - 如何在 Junit 测试中更改 Spring 配置文件

java - 使用 libphonenumber 时使用 Iterator.next() 获取 java.util.NoSuchElementException

python - 如何避免单元测试中的代码重复

java - 我收到以下代码的 "java.lang.Exception: Method tearDown should have no parameters"& result.getStatus 为 null

java - JUnit 出现初始化错误( eclipse 氧气)

python - “通配符”用于使用 Python 的 testfixtures 模块检查捕获的日志输出

java - 在java中将函数作为参数传递

java - Thymeleaf 中的 View 和重定向有什么区别?

java - 当我打印 map 数据时,为什么我总是按排序顺序排列?

javascript - Angular - 测试带有附加集的@Input