2016-08-10 2 views
0

Ich bin wirklich enttäuschend mit einem Fehler werfen, wenn ich versuche, meine Unit-Tests mit Gurke starten.Kann nicht starten Junit Test mit Gurke aufgrund seltsamer Fehler

ich diesen Fehler:

java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
at java.lang.Class.getConstructor0(Class.java:3075) 
at java.lang.Class.getConstructor(Class.java:1825) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
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:33) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 17 more 

ich bereits versucht, diese lib zu meinem Classpath hinzufügen, aber dieser Fehler ist immer noch mit einem anderen fehlt lib werfen, und eine andere usw ...

I‘ Durchsuchungen und nichts von all diesen Bibliotheken wird von Gurke benötigt. Dies ist meine Testklasse.

@RunWith(Runner.class) 
@CucumberOptions(monochrome = true, features = { "src/test-integration/resources/scenarii" }, glue = { 
     "info.scandi.fusion.cucumber" }, plugin = { "pretty" }) 
public class AllTests { 

} 

Die Pfade scheinen korrekt zu sein. Und wie Sie sehen können, ist meine Schrittdefinition in einem Jar definiert, den ich in mein Projekt importiert habe.

Mein Fehler scheint damit in Zusammenhang zu stehen stackoverflow question. Aber ich benutze kein Wurzelgurkenpaket.

Jede Hilfe wäre wirklich zu schätzen wissen.

Antwort

0

Das Problem aus der slf4j lib kommt. Ich weiß nicht warum. Ich lösche es, weil es nicht mehr benutzt wurde. Jetzt funktioniert alles wie erwartet. Denkt nach.

1

Dies ist kein Gurkenfehler. Sie verpassen eine Abhängigkeit, die zur Laufzeit benötigt wird.

Mein Ansatz für die Problembehandlung dieses Problem wäre, so viel wie möglich von der Gurkenkonfiguration zu entfernen, bis der Fehler verschwunden ist.

Ich würde nur @RunWith(Cucumber.class) behalten und dann sehen, was passiert ist.

Mit Blick auf Ihre JUnit-Klasse, merke ich, dass Sie einen Läufer namens Runner.class Ich weiß nicht, welcher Läufer das ist, aber ich weiß, dass es nicht der JUnit Gurke Läufer ist.

Ein guter Ausgangspunkt für mit Gurke Einstieg ist https://github.com/cucumber/cucumber-java-skeleton

+0

Thx für Ihre Antwort. Die Runner-Klasse ist eine benutzerdefinierte Klasse, die Gurken erweitert und einige Features hinzufügt. Ich benutze es in anderen Projekten und es funktioniert perfekt, aber es scheint hier zu versagen. Ich bin mir absolut sicher, dass das nicht mein Läufer ist, der von dieser Klasse abhängt. Die Verbindung, die ich zur Verfügung stelle, zeigen, dass Gurke diese Art des Fehlers wirft, wenn der Eigenschaftspfad gerade "Gurke" ist. Es ist nicht mein Fall. Aber wenn ich die fehlende Abhängigkeit meinem Klassenpfad hinzufüge. Ich falle in dieselbe fehlende Bibliothek als der Link, den ich anbiete. Ich werde versuchen, meinen Läufer zu untersuchen – Scandinave