Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
JUNIT4不';我不能在Java8下工作_Java_Unit Testing_Intellij Idea_Junit4 - Fatal编程技术网

JUNIT4不';我不能在Java8下工作

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

我有一些项目的单元测试,我在intellij idea中执行。如果我使用Java7,测试工作正常,但是当我将java从7更改为8时,我在所有单元测试中都会得到这个错误跟踪

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>