Karate API Test läuft nicht durch . initializationError

pixelhead

Aktives Mitglied
Hallo zusammen,

ein ganz einfacher Karate Test aus diesem Tutorial (https://www.softwaretestinghelp.com/api-testing-with-karate-framework/) läuft nicht durch. Es passiert im Grunde nichts.

Ursprünglich hatte ich diesen Fehler:


... und habe nun eine neue Java Version eingerichtet. Die älteren Übungsprojekte laufen auch, damit sollte die Javaumgebung o.k. sein und es nicht daran liegen.

Nach "Run as -> JUnit Test" läuft der Karatetest nun gar nicht erst an, es kommt zu einem initializationError.

In Eclipse wird im Fenster zur "Failure Trace" etwas angezeigt. Siehe Screenshot unten.

Auf der Console in Eclipse kommt keine Meldung, alles weiß.

Umgebung:

Java:
[CODE lang="java" title="Java Version"]openjdk version "16" 2021-03-16
OpenJDK Runtime Environment (build 16+36-2231)
OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)[/CODE]

pom.xml, Dependencies:
[CODE lang="java" title="pom xml dependencies"]<dependencies>

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>0.9.5</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>0.9.5</version>
<scope>test</scope>
</dependency>

</dependencies> [/CODE]

Fehlen noch Angaben?

Eclipse_Fehlermeldung_Karate.jpg

Ich weiß jetzt nicht wo ich noch nachschauen kann nach Logs oder so, bisher ist mir nur das bekannt was ich hier angebe.

Danke und viele Grüße
 
Versuch einfach erst einmal, eine aktuelle Version von karate zu nutzen. 0.9.5 ist von Anfang 2020 - aktuell ist 1.1.0.

Die Fehlermeldung sagt recht wenig aus. Wenn ich raten müsste, dann würde ich sagen: Das Tool setzt auf die JavaScript Engine Nashorn. Diese ist ab Java 11 deprecated gewesen und mit Java 15 ist sie entfernt worden. Sowas würde in aktuelleren Versionen bestimmt behoben - falls die neuen Java Versionen unterstützt werden. Falls Karate generell kein Java 16 unterstützt, musst du ggf. auf Java 11 zurück gehen. Aber wie gesagt: probiere erst einmal aktuelle Versionen aus, also 1.1.0 oder die noch neueren RC Versionen.
 
Danke schon mal für die Meldung.

Da stand auch was mit Nashorn. Siehe Screenshot unten.

Das ist ja als Maven Projekt angelegt und ich habe das mal als Maven Test laufen lassen. Dort kommt auch was in der Console:

[CODE lang="java" title="Maven Test Durchlauf Fehlermeldung"][INFO] Scanning for projects...
[INFO]
[INFO] --------------------< KarateTest:KarateTestSample >---------------------
[INFO] Building KarateTestSample 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ KarateTestSample ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.223 s
[INFO] Finished at: 2021-09-20T15:16:41+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project KarateTestSample: Compilation failure: Compilation failure:
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[/CODE]

Ich werde die pom.xml entsprechend anpassen.

Hier die Meldung mit dem Nashorn Anteil:
karate_eclipse_nashorn.jpg
 
Es läuft immer noch nicht.

Ich habe die pom aktualisiert:
[CODE lang="java" title="pom dependencies"]<dependencies>

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>0.9.5</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.intuit.karate/karate-junit4 -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>1.1.0</version>
<scope>test</scope>
</dependency>

</dependencies>[/CODE]

Ich nutze "karate apache" (keine 1.1.0 dabei) und "karate junit4" (1.1.0 vorhanden).
Es gibt aber noch karate core" (mit 1.1.0).
Muss ich da etwas anpassen?

Run As -> Maven test Fehlermeldung:
[CODE lang="java" title="maven test run Fehler"][INFO] Scanning for projects...
[INFO]
[INFO] --------------------< KarateTest:KarateTestSample >---------------------
[INFO] Building KarateTestSample 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ KarateTestSample ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.395 s
[INFO] Finished at: 2021-09-20T15:29:21+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project KarateTestSample: Compilation failure: Compilation failure:
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[/CODE]

Bei Run As - JUnit kommt diese Fehlermeldung in der Console:
[CODE lang="java" title="run as junit Fehler"]Class not found TestRunner
java.lang.ClassNotFoundException: TestRunner
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:778)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:502)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:768)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)[/CODE]

Die aus dem Tutorial benutzten Scripte sehen so aus:

userDetails.feature File:
[CODE lang="java" title="feature file"]Feature: fetching User Details
Scenario: testing the get call for User Details

Given url 'https://reqres.in/api/users/2'
When method GET
Then status 200[/CODE]

Zugehörige TestRunner.java Datei:
[CODE lang="java" title="testrunner java file"]import org.junit.runner.RunWith;

import com.intuit.karate.junit4.Karate;

@RunWith(Karate.class)
public class TestRunner {

}
[/CODE]

Wie man merkt bin ich nicht in Java fit 🙂 , aber es ist halt so wie im Tutorial und sieht ja auch ganz simpel aus. Wieso kommt da ein Class not found?
 
Run As -> Maven test Fehlermeldung:
Die Fehlermeldung ist doch offensichtlich: 😉
Code:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.

Eclipse würde ich erstmal außen vor lassen, bis der Maven-Build läuft.
 
Zuletzt bearbeitet:
OK, danke. Ich habe mich wegen 7 statt 5 nach dieser Anleitung gerichtet:


Schritte:

Right-click Project properties >> Java compiler.
-> OK

Change the JDK compliance parameters from 1.5 -> 1.7 or above.
-> OK, nun auf 1.8

Click on the Execution Environments link and select the latest or suitable JDK above JDK 1.7
-> Finde ich nicht (in Eclipse)

Es bleibt beim Fehler:
[CODE lang="java" title="7 statt 5 Fehler"][ERROR] Source option 5 is no longer supported. Use 7 or later.
[ERROR] Target option 5 is no longer supported. Use 7 or later.
[INFO] 2 errors [/CODE]

Der letzte Schritt scheint zu fehlen. Ich finde es nicht.
 
Und wenn Du so alte Versionen nutzen willst (Ich kenne karate-apache nicht - keine Ahnung, warum es davon keine neuen Versionen gibt), dann solltest Du evtl. auf einer älteren Java Version bleiben. Java 11 als LTS Version wäre da evtl. eine gute Lösung.

Und die einzelnen karate Abhängigkeiten würde ich auf einer Version halten, um eben keine Inkompatibilitäten zu bekommen. Also 0.9.6 ist die letzte Version von karate-apache.
 
Ja, danke. Das hatte ich auch gemacht.

Das will immer noch nicht so richtig ... Mit "Run As -> JUnit" kommt die Meldung, dass keine Class gefunden wird und bei

"Run As -> Maven Test" sieht die Meldung so aus:

[CODE lang="java" title="maven test Meldung nach Config"][INFO] Scanning for projects...
[INFO]
[INFO] --------------------< KarateTest:KarateTestSample >---------------------
[INFO] Building KarateTestSample 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ KarateTestSample ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ KarateTestSample ---
[INFO] Surefire report directory: C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestRunner
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.122 sec <<< FAILURE!
initializationError(TestRunner) Time elapsed: 0.006 sec <<< ERROR!
java.lang.NoClassDefFoundError: com/intuit/karate/RuntimeHook
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
at com.intuit.karate.junit4.Karate.<init>(Karate.java:66)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
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:70)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
at org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28)
at org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassNotFoundException: com.intuit.karate.RuntimeHook
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
... 34 more


Results :

Tests in error:
initializationError(TestRunner): com/intuit/karate/RuntimeHook

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.543 s
[INFO] Finished at: 2021-09-20T16:36:43+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project KarateTestSample: There are test failures.
[ERROR]
[ERROR] Please refer to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[/CODE]

Hier nochmal die pom.xml:

[CODE lang="java" title="pom xml nach neuer Config"]<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>KarateTest</groupId>
<artifactId>KarateTestSample</artifactId>
<version>0.0.1-SNAPSHOT</version>


<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>

<!-- https://mvnrepository.com/artifact/com.intuit.karate/karate-apache -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>0.9.6</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.intuit.karate/karate-junit4 -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>1.1.0</version>
<scope>test</scope>
</dependency>

</dependencies>

</project>[/CODE]
 
Die Dependencies haben nun die gleichen Versionsnummern.

Java Compiler in Eclipse steht auf 1.5, in der pom.xml auf 1.8.

Es kommt immer noch zum Fehler: java.lang.ExceptionInInitializerError

Hier nochmal die zwei Miniscripte, pom.xml und Fehlermeldung:

Script 1, TestRunner.java:
[CODE lang="java" title="TestRunner java Script"]import org.junit.runner.RunWith;

import com.intuit.karate.junit4.Karate;

@RunWith(Karate.class)
public class TestRunner {

}
[/CODE]

Script 2, UserDetails.feature File:
[CODE lang="java" title="User Details Feature File"]Feature: fetching User Details
Scenario: testing the get call for User Details

Given url 'https://reqres.in/api/users/2'
When method GET
Then status 200[/CODE]

pom.xml:
[CODE lang="java" title="pom xml mit gleichen Versionsnummern in den Dependencies"]<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>KarateTest</groupId>
<artifactId>KarateTestSample</artifactId>
<version>0.0.1-SNAPSHOT</version>


<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>

<!-- https://mvnrepository.com/artifact/com.intuit.karate/karate-apache -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>0.9.6</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.intuit.karate/karate-junit4 -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>0.9.6</version>
<scope>test</scope>
</dependency>

</dependencies>

</project>[/CODE]

Fehlermeldung nach Maven Test Lauf:
[CODE lang="java" title="Maven Test Fehlermeldung"][INFO] Scanning for projects...
[INFO]
[INFO] --------------------< KarateTest:KarateTestSample >---------------------
[INFO] Building KarateTestSample 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ KarateTestSample ---
[INFO] Surefire report directory: C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestRunner
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.566 sec <<< FAILURE!
initializationError(TestRunner) Time elapsed: 0.005 sec <<< ERROR!
java.lang.ExceptionInInitializerError
at com.intuit.karate.junit4.Karate.<init>(Karate.java:81)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
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.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.createBindings()" because "com.intuit.karate.ScriptBindings.NASHORN" is null
at com.intuit.karate.ScriptBindings.createBindings(ScriptBindings.java:160)
at com.intuit.karate.core.Tags.<init>(Tags.java:158)
at com.intuit.karate.core.Tags.<clinit>(Tags.java:48)
... 24 more


Results :

Tests in error:
initializationError(TestRunner)

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.716 s
[INFO] Finished at: 2021-09-21T10:56:01+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project KarateTestSample: There are test failures.
[ERROR]
[ERROR] Please refer to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[/CODE]

Es will einfach nicht klappen.
 
Was für ein Java JDK nutzt Du denn? Nutzt Du immer noch Java 16?

Die Informationen, die gegeben wurden, sind weiterhin gültig:
Wenn ich raten müsste, dann würde ich sagen: Das Tool setzt auf die JavaScript Engine Nashorn. Diese ist ab Java 11 deprecated gewesen und mit Java 15 ist sie entfernt worden. Sowas würde in aktuelleren Versionen bestimmt behoben - falls die neuen Java Versionen unterstützt werden. Falls Karate generell kein Java 16 unterstützt, musst du ggf. auf Java 11 zurück gehen.
 
Habe eben gerade auf die JDK 11 geändert. Jetzt läuft es fehlerfrei in Maven durch, aber ...

java -version :
[CODE lang="java" title="Java Version 11"]openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)[/CODE]

javac -version :
[CODE lang="java" title="javac 11"]javac 11[/CODE]

... bei "Run As -> Junit Test" landet nichts in der Reportdatei (/target/surefire-reports/karate-summary.html). Da steht 0/0.
Kein Testergebnis wird angezeigt.
Ursprünglich, als es wegen meiner Konfiguration die ganzen Fehlermeldungen gab, wurde der Report erstellt, nur halt mit einer Fehlermeldung.

Es kommt aber nirgends zu Fehlermeldungen.

"Run As -> Maven Test" Durchlauf:
[CODE lang="java" title="Maven Test Lauf OK"][INFO] Scanning for projects...
[INFO]
[INFO] --------------------< KarateTest:KarateTestSample >---------------------
[INFO] Building KarateTestSample 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ KarateTestSample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ KarateTestSample ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ KarateTestSample ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ KarateTestSample ---
[INFO] Surefire report directory: C:\4ma\software\Eclipse\eclipse_workspace\KarateTestSample\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestRunner
Warning: Nashorn engine is planned to be removed from a future JDK release

HTML report: (paste into browser to view) | Karate version: 0.9.6
file:/C:/4ma/software/Eclipse/eclipse_workspace/KarateTestSample/target/surefire-reports/karate-summary.html
===================================================================

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.979 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.312 s
[INFO] Finished at: 2021-09-21T11:27:49+02:00
[INFO] ------------------------------------------------------------------------
[/CODE]

Dieser Hinweis kommt auch schön in rot:
"Warning: Nashorn engine is planned to be removed from a future JDK release"

Es läuft, aber nicht richtig. Komisch.
 
Zuletzt bearbeitet:
Er startet die Tests aber er findet keine Tests. Sicher, dass Du Tests hast und dass diese richtig heißen und so?

Die Warnung ist eine Warnung und die kannst Du ignorieren. Die besagt ja nur, was Du selbst schon aktiv erlebt hast: Mit Java 15+ wird es nicht mehr funktionieren!
 
Das was ich habe steht weiter oben als Script 1 und Script 2. So stehts im Tutorial. Im Feature File also der Test. Mit dem TestRunner wirds gestartet. Dieser Test wurde ja auch als fehlerhaft im zweiten Schritt angezeigt wegend er Javaprobleme. Nur jetzt wird halt ... nichts angezeigt.

Das ist in dieser Datei:
file:///C:/PfadZumOrdner/KarateTestSample/target/surefire-reports/karate-summary.html

Siehe Screenshot.

karate_keine_Tests.jpg
 
Ich sehe da erst einmal nur, dass Du da den TestRunner hast. Der wird ja auch gestartet. Aber ich sehe in dem Bildschirmfoto #17 jetzt nicht die Tests.

Ich habe aber gerade wirklich Probleme nachzuvollziehen, was Du da gerade genau machst / probierst. Du bist offensichtlich ganz neu in der Thematik - An was versuchst Du Dich entlang zu hangeln?

Der Startpunkt sollte doch eigentlich etwas sein wie https://github.com/intuit/karate

Da findet sich dann die Dokumentation und man kann loslegen - z.B. direkt beim Maven - und hat dann auch direkt ein aktuelles Karate mit junit5:
Code:
<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-junit5</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>

Und dann hat man auch direkt ein Beispiel mit JUnit 5: https://github.com/intuit/karate#junit-5
==> Test Klasse mit mehreren Karate.Test.

Ich vermute, dass Du verschiedene Dinge parallel betrachtest, die alle nicht zusammen passen und Du daher massiv aufgeschmissen bist. Das geht in keiner Weise gegen Dich sondern ist einfach ein Problem der schnellen Entwicklung. Viele Anleitungen und Blog Beiträge sind ja auch weiterhin verfügbar.

Falls dieser Eindruck richtig ist, wäre es evtl. gut, den Ansatz noch einmal zu durchdenken und von Grund auf sauber zu starten.
 
Dieser Test wurde ja auch als fehlerhaft im zweiten Schritt angezeigt wegend er Javaprobleme. Nur jetzt wird halt ... nichts angezeigt.
Wo wurde der Tests als fehlschlagend angezeigt? Tests konnten bisher einfach noch nie gestartet werden, das kam nie zu dem Punkt, das die Karate-Tests versucht wurden auszuführen.

So sieht die Projektstruktur aus:
default-package ist immer schlecht, das _kann_ für sowas verantwortlich sein.
 
Ja, bin sehr neu in der Thematik🙂

Bei mir sah der Report fast so aus wie im Tutorial ganz unten beim Punkt "Following HTML Report will be shown to you depicting Scenarios & Test that has been executed for the mentioned scenario:":
Nur das bei mir "test 2: When method GET" rot und damit als fehlerhaft angezeigt war. Ich konnte das aufklappen und die FehlermeldungsException kam im Detail. Jetzt kommt nichts mehr. Ich mache nichts anderes als im Tutorial.
 
Also was mir beim ersten Überfliegen auffällt: Bei Deinem Maven-Projekt fehlt das
Code:
<build>
       <testResources>
            <testResource>
                   <directory>src/test/java</directory>
                   <excludes>
                            <exclude>**/*.java</exclude>
                    </excludes>
             </testResource>
        </testResources>
        <plugins>
        ...
        </plugins>
</build>

Eine mögliche Alternative könnte sein, die feature Datei in src/test/resources zu legen.

Und in dem Beispiel /Tutorial liegt es nicht in dem default package. Prizipiell kann das problematisch sein, wie @mrBrown schon sagte.
 
Oh, das ist mir aber unangenehm ...

Mit dem Eintrag in pom.xml gehts! Den Schritt im Tutorial habe ich nicht gemacht.

Jetzt wird alles angezeigt wie es sein soll.

Das default package ist bei mir unverändert so wie im Screenshot zur Projektstruktur.

DANKE!
 

Zurück
Oben