【发布时间】:2014-08-10 18:21:03
【问题描述】:
我正在尝试在我的 Linux 命令提示符 /opt/junit/ 上运行 JUnit,其中包含必要的 JARS(hamcrest-core-1.3.jar 和 junit.jar)和类文件,我正在使用以下命令运行 JUnit:
java -cp hamcrest-core-1.3.jar:junit.jar:. org.junit.runner.JUnitCore TestRunner
TestJunit 类:
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestJunit {
@Test
public void testAdd() {
String str= "Junit is working fine";
assertEquals("Junit is working fine",str);
}
}
TestRunner:
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println("fail ho gaya"+failure.toString());
}
System.out.println("passed:"+result.wasSuccessful());
}
}
我在运行时遇到以下异常
JUnit version 4.11
.E
Time: 0.003
There was 1 failure:
1) initializationError(TestRunner)
java.lang.Exception: No runnable methods
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:169)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:104)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:355)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runner.Computer.getRunner(Computer.java:40)
at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:101)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:87)
at org.junit.runners.Suite.<init>(Suite.java:80)
at org.junit.runner.Computer.getSuite(Computer.java:28)
at org.junit.runner.Request.classes(Request.java:75)
at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
FAILURES!!!
Tests run: 1, Failures: 1
【问题讨论】:
-
不知道,正在学习初学者教程。这些文件是从教程本身复制的。无论如何得到了我的答案,sqa.fyicenter.com/FAQ/JUnit/…
-
所有答案均无效。原来我在我的一个单元测试中有一行双括号初始化......在JDK 8上同样如此......当删除时,导致这个错误消失了!它类似于 myObject.setSomething(new OtherObject() {{/*Put 任何东西*/}});花了好几个小时才找到这个(一直认为我的导入从另一个类中引入了一些糟糕的静态初始化程序、错误的类加载器、反射垃圾等)。我相信这 可能 是一个 JVM 错误,但没有证据,所以我将其作为评论而不是答案。 TL;DR "删除双括号初始化的 {{}} 部分。
-
我遇到了同样的错误,当我在测试类上删除“public”访问修饰符时,错误消失了,测试运行正常。没有深入研究原因,只是在这里添加以防万一它对其他人有帮助。
标签: java junit ubuntu-12.04 junit4