我正在尝试创建一个非常简单的eclipse插件。
我希望在JUnit4TestAdapter的帮助下使用我的工具运行当前选定的测试用例。
当我在日食之外跑步时,使用“主要”和“参数”一切都很好。
当我在eclipse中使用相同的“参数”调用“main”时(我正在为该调用创建单独的线程),我得到以下异常:
java.lang.Exception: No runnable methods
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:171)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:115)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:269)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:66)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:59)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:31)
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:24)
at util.JUnitTestRunner.runTest(JUnitTestRunner.java:26)
at master.Master.runTests(Master.java:180)
at master.Master.runTestsWithEquivalenceAnalysis(Master.java:207)
at master.Master.runInitialTests(Master.java:132)
at master.Master.run(Master.java:102)
at master.Master.runMutationTesting(Master.java:49)
任何想法,实际上出了什么问题?为什么BlockJUnit4ClassRunner决定在eclipse之外运行时抛出一个异常他给定的测试就好了?顺便说一句,实际测试是JUnit 3.8(与JUnit4相反)
答案 0 :(得分:3)
“没有可运行的方法”表示JUnit找不到任何可测试的方法。对于JUnit 3,这是以testXXX()
开头的方法;对于JUnit 4,它是用@Test
注释的方法。
JUnit不运行“main”方法,除非你使用JUnit 4并且main方法具有@Test
注释(这是非常差的样式)。
如果你的方法确实有这些正确的注释,并且Eclipse仍然抛出同样的异常,那么这可能是类路径或配置更深层次问题的结果。