JUNIT4不';我不能在Java8下工作
我有一些项目的单元测试,我在intellij idea中执行。如果我使用Java7,测试工作正常,但是当我将java从7更改为8时,我在所有单元测试中都会得到这个错误跟踪JUNIT4不';我不能在Java8下工作,java,unit-testing,intellij-idea,junit4,Java,Unit Testing,Intellij Idea,Junit4,我有一些项目的单元测试,我在intellij idea中执行。如果我使用Java7,测试工作正常,但是当我将java从7更改为8时,我在所有单元测试中都会得到这个错误跟踪 java.lang.IllegalArgumentException at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119) at com.intellij.junit4.JUnit4IdeaT
java.lang.IllegalArgumentException
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
这个问题的根本原因是什么
更新-添加测试类和标头的导入
import junit.framework.TestCase;
import mockit.Expectations;
import mockit.NonStrictExpectations;
import mockit.Mocked;
public class PrepareModule extends TestCase {
您说您正在使用JUnit4,但您的代码片段包括:
import junit.framework.TestCase;
public class PrepareModule extends TestCase {
}
这是使用JUnit 3风格的测试
试着这样做:
import org.junit.Test;
public class PrepareModule {
@Test
public void someTest() {
}
}
好的,用新鲜的眼睛看着你的stacktrace:
java.lang.IllegalArgumentException
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
假设这是整个堆栈,我只能从以下位置看到包:
java.lang
sun.reflect
com.intellij
JUnit
与问题无关;问题可能出在堆栈顶部的类中:com.intellij.junit4.JUnit4IdeaTestRunner
如果可以,请尝试不同的JUnit Runner,例如:
java org.junit.runner.JUnitCore
您使用的是哪个版本的JMockIt?JMockIt的一些旧版本与Java 8不兼容
我的问题几乎和你一样(一切都一样,只是我的测试没有扩展TestCase)。我通过升级JMockIt 1.0->1.14解决了我的问题。我认为这个问题是由IDEA引起的。看起来问题不在JUNIT中,而是在intellijAdd中。请添加一些代码。您是否使用IntelliJ的最新版本?我现在正在IntelliJ 15中运行JUNIT 4.12。您使用的是JUnit4,但使用的是JUnit3方式!不要扩展TestCase,而是用@test注释您的测试方法。如何:您能检查JUnit3依赖项并删除它们吗?这个答案的方法似乎是正确的,但这并不能回答这个问题。一旦你有足够的钱,你就可以在任何岗位上工作。也请检查一下,我在一些遗留代码(但在Eclipse中)中遇到了同样的问题,这个提示为我解决了这个问题。谢谢
java org.junit.runner.JUnitCore <test class name>