2016-07-15 10 views
-3

Ich habe einige Unit-Tests für Projekt, die ich in Intellij Idee ausführen. Wenn ich Java 7 verwende, funktionieren Tests gut, aber wenn ich Java von 7 auf 8 ändere, bekomme ich diesen Fehler StackTrace bei allen meinen Unit-Tests.JUNIT4 funktioniert nicht unter Java 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) 

Was ist die Ursache dieses Problems?

AKTUALISIEREN - Import der Testklasse und des Headers hinzufügen.

import junit.framework.TestCase; 
import mockit.Expectations; 
import mockit.NonStrictExpectations; 
import mockit.Mocked; 

public class PrepareModule extends TestCase { 
+1

Sieht aus wie das Problem nicht in JUNIT ist es in intellij – Jens

+0

Fügen Sie bitte einen Code hinzu. – cssGEEK

+0

Verwenden Sie die neueste Version von IntelliJ? – Tom

Antwort

0

Sie sagen, Sie verwenden JUnit 4 aber Ihr Code-Snippet enthält:

import junit.framework.TestCase; 

public class PrepareModule extends TestCase { 
} 

Das die JUnit 3 Stil von Test

Versuchen Sie es auf diese Weise verwendet:

import org.junit.Test; 

public class PrepareModule { 
    @Test 
    public void someTest() { 
    } 
} 
+0

Immer noch den gleichen Fehler. –

+1

Können Sie nach Abhängigkeiten von JUnit 3 suchen und diese entfernen? Der Ansatz dieser Antwort scheint richtig zu sein. – vikingsteve

0

OK, wit h frischen Augen auf Ihrem Stacktrace suchen:

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) 

Unter der Annahme, das der gesamte Stapel wird, ich Pakete sehen nur ab:

  • java.lang
  • sun.reflect
  • com.intellij

Diese sagt mir, dass JUnit nichts zu tun hat mit dem Problem; und wahrscheinlich liegt das Problem in der Klasse an der Spitze (oder unten, je nachdem, welcher) des Stapels: com.intellij.junit4.JUnit4IdeaTestRunner

Versuchen Sie ein anderes JUnit Runner wenn Sie können, wie from command line:

java org.junit.runner.JUnitCore <test class name> 
0

Welche Version von JMockIst benutzt du? Einige ältere Versionen von JMockIt sind nicht kompatibel mit Java 8.

Ich hatte fast das gleiche Problem wie Sie (alles gleich, außer meine Tests TestCase nicht erweitern). Ich habe mein Problem behoben, indem ich JMockIt 1.0 -> 1.14 aktualisiert habe.

0

Ich denke, dieses Problem wird von IDEA eingeführt.

+0

Dies liefert keine Antwort auf die Frage. Sobald Sie genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) haben, können Sie [comment] (http://stackoverflow.com/help/privileges/comment) zu jedem Post schreiben. Überprüfen Sie auch dieses [was kann ich stattdessen tun] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i-do-instead). – thewaywewere