[英]No runnable methods when running JUnit suite test
I am very new to java testing using Intellij
JUnit
plugin. 我对使用
Intellij
JUnit
插件进行Java测试非常Intellij
。 I want to use some JUnit Suite
, so I copied some code 我想使用一些
JUnit Suite
,所以我复制了一些代码
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses(value={KruskalTest.class})
class KruskalTestSuite {}
in other file 在其他文件中
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class JunitTestSuiteRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(KruskalTestSuite.class);
for (Failure fail : result.getFailures()) {
System.out.println(fail.toString());
}
if (result.wasSuccessful()) {
System.out.println("All tests finished successfully...");
}
}
}
and then import junit.framework.TestCase; 然后导入junit.framework.TestCase;
public class KruskalTest extends TestCase {
@org.junit.Test
public void testMain() throws Exception {
assertEquals("hello", "hello");
}
}
the problem is that when I run this code I get this exception 问题是,当我运行此代码时,出现此异常
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.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
org.junit.runners.BlockJUnit4ClassRunner org.junit.runners.BlockJUnit4ClassRunner
protected void validateInstanceMethods(List<Throwable> errors) {
validatePublicVoidNoArgMethods(After.class, false, errors);
validatePublicVoidNoArgMethods(Before.class, false, errors);
validateTestMethods(errors);
if (computeTestMethods().size() == 0)
errors.add(new Exception("No runnable methods"));
}
Your code passes all validation checks. 您的代码通过了所有验证检查。 It executes fine.
它执行得很好。
Just a note, you need not extend TestCase when using Annotation. 请注意,使用注释时无需扩展TestCase。
Instead of passing the test suite to JUnitCore, you need to pass the test class. 无需将测试套件传递给JUnitCore,您需要传递测试类。
So change: 所以改变:
Result result = JUnitCore.runClasses(KruskalTestSuite.class);
to: 至:
Result result = JUnitCore.runClasses(KruskalTest.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.