2017-08-29 22 views
2

J'essaie d'utiliser le framework BDD de Karaté pour exécuter des tests sur ma suite d'API et je cours sur un NPE. Pour autant que je sache, je n'ai rien mal configuré, mais je suis sûr que j'ai oublié quelque chose. Étant donné le fichier de fonction et le gestionnaire de tâches ci-dessous, y a-t-il quelque chose que j'ai mal fait?Cadre BDD de Karaté lançant NPE avec une configuration simple

Mise à jour: cela fonctionne avec Karaté 0.2.9 mais pas le dernier moment 0.5.0.2

Feature fichier: .../src/test/resources/root/fonctionnalité/sanity.feature

Feature: Sanity Check 
    As a developer 
    I want to ensure that the test framework is active 
    So that I can be confident I am testing correctly 

    Background: 
    * url httpBin 

    Scenario: httpBin reflection 
    Given path '/anything/foo/bar?baz=quux' 
    When method GET 
    Then status 200 
    And match response contains { "args": {"baz":"quux"}} 
    And match response contains { "method": "GET" } 

Driver: .../src/test/java/root/fonctionnalité/santé mentale/SmokeTest.java

package root.feature.sanity; 

import com.intuit.karate.junit4.Karate; 
import cucumber.api.CucumberOptions; 
import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.runner.RunWith; 

/** 
* Created by williamspaul on 8/29/17. 
*/ 
@RunWith(Karate.class) 
@CucumberOptions(plugin = {"pretty", "html:target/cucumber"}) 
public class SmokeTest { 

    @BeforeClass 
    public static void beforeClass() {} 

    @AfterClass 
    public static void afterClass() {} 

} 

sortie test mvn

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running root.feature.sanity.SmokeTest 
10:46:08.568 [main] DEBUG com.intuit.karate.cucumber.CucumberRunner - init test class: class apigee.feature.sanity.SmokeTest 
10:46:08.680 [main] DEBUG com.intuit.karate.cucumber.CucumberRunner - loading feature: /(private-path)/target/test-classes/root/feature/sanity/sanity.feature 
Feature: Sanity Check 
    As a developer 
    I want to ensure that the test framework is active 
    So that I can be confident I am testing correctly 

    Background:  # apigee/feature/sanity/sanity.feature:6 
    * url httpBin 

0 Scenarios 
0 Steps 
0m0.000s 

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.389 sec <<< FAILURE! 
Feature: Sanity Check Time elapsed: 0.11 sec <<< ERROR! 
java.lang.NullPointerException 
    at com.intuit.karate.cucumber.CucumberUtils.afterStep(CucumberUtils.java:148) 
    at com.intuit.karate.cucumber.CucumberUtils.runStep(CucumberUtils.java:140) 
    at com.intuit.karate.cucumber.KarateRuntime.runStep(KarateRuntime.java:51) 
    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44) 
    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39) 
    at cucumber.runtime.model.CucumberScenario.runBackground(CucumberScenario.java:59) 
    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:42) 
    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102) 
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63) 
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70) 
    at com.intuit.karate.junit4.Karate.runChild(Karate.java:60) 
    at com.intuit.karate.junit4.Karate.runChild(Karate.java:25) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at com.intuit.karate.junit4.Karate.run(Karate.java:66) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    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) 


Results : 

Tests in error: 
    Feature: Sanity Check 

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

Répondre

1

Vous utilisez en fait une version bêta. Utilisez simplement 0.5.0 et tout ira bien.

BTW un grand merci pour trouver ce, est fixé dans la branche développement: https://github.com/intuit/karate/issues/158

Aussi, ne regardez this tweet pour plus de détails sur ce pourquoi avant/après crochet étape est nécessaire

+0

0.5.0 résultats dans un RuntimeException à propos de l'échec de la construction d'une classe nommée "karate-http.properties" – PaulProgrammer

+0

A dû inclure la dépendance karate-apache et ajouter un fichier karate-http.properties - pas quelque chose qui était dans les docs. – PaulProgrammer

+0

tout est dans les docs. vous n'avez pas besoin d'un fichier de propriétés manuel. retirez-le et voyez. –