Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JUnit测试用例中找不到测试方法_Java_Testing_Junit_Glassfish 3 - Fatal编程技术网

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

Java 在JUnit测试用例中找不到测试方法,java,testing,junit,glassfish-3,Java,Testing,Junit,Glassfish 3,我目前正在开发一个程序,可以在外部类上执行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

我目前正在开发一个程序,可以在外部类上执行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());
    }
}
String testsPath=“/path/to/classes”;
字符串junitJar=“/path/to/junit-4.11.jar”
URL taskUrl=新文件(testsPath).toURI().toul();
URL[]URL=新URL[]{taskUrl,junitJar};
@抑制警告(“资源”)
ClassLoader=新的URLClassLoader(URL);
Class clazz=loader.loadClass(任务);
Result res=JUnitCore.runClasses(clazz);
如果(!res.wasuccessful()){
对于(故障f:res.getFailures()){
System.out.println(f.toString());
}
}
然而,它并没有像预期的那样工作。运行此代码时,我收到以下消息:
初始化错误(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

我从 我没有设置父类加载器,这似乎是造成问题的原因。将其设置为另一个答案中所说的,它现在执行测试