2017-11-21 26 views
0

私はspring cucumber jvmを使用してサービス用の休憩APIの春休み文書をテストしようとしていますが、シナリオを実行しようとするとnullポインタ例外が発生します。 Junitコンテキストを初期化できません。キュウリを使用して春休み文書を生成できません

エラーメッセージ:

java.lang.NullPointerException at 
org.springframework.restdocs.ManualRestDocumentation.beforeO‌​peration(ManualRestD‌​ocumentation.java:90‌​) at 
org.springframework.restdocs.JUnitRestDocumentation.beforeOp‌​eration(JUnitRestDoc‌​umentation.java:76) 

コード:

private AppProperties props; 
@Before("@rest") public void beforeScenario() { 
    JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("target/generated-snippets"); 
    System.out.println("jUnitRestDocumentation " +restDocumentation); 
    spec = new RequestSpecBuilder().addFilter(documentationConfiguration(restDocumentation)).build(); 
    System.out.println("\n spec init .. " +restDocumentation); 
} 

ステップ定義コード:

@Given("^create a rest document for VHR API$") 
public void create_a_rest_document_for_VHR_API() throws Throwable { 
    estAssured.given(spec) 
     .accept("application/json") 
     .filter(document("vhrdocument")) .when() 
     .get(props.getVhrrequesturl() + "/vhrData/{vehicleID}", "5VW4T7AU0FM029999") .then().log().all(); 
} 
+0

エラーメッセージ:org.springframework.restdocs.JUnitRestDocumentation.beforeOperation(JUnitRestDocumentation.javaでorg.springframework.restdocs.ManualRestDocumentation.beforeOperation(ManualRestDocumentation.java:90) で java.lang.NullPointerExceptionが : 76) – ravi

+0

@Autowired プライベートAppPropertiesの小道具; @Before( "@ rest") public void beforeScenario(){ JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation( "target/generated-snippets"); System.out.println( "jUnitRestDocumentation" + restDocumentation); spec = new RequestSpecBuilder()。addFilter(documentationConfiguration(restDocumentation))。ビルド(); System.out.println( "\ n spec init .." + restDocumentation); } – ravi

+0

ステップ定義コード:@Given( "^ VHRのAPIの$のために残りの文書作成") ます。public void create_a_rest_document_for_VHR_API()のThrowableをスローを{ RestAssured.given(スペック) .accept( "アプリケーション/ JSON") .filter(document( "vhrdocument")) .when() .get(props。getVhrrequesturl()+ "/ vhrData/{vehicleID}"、 "5VW4T7AU0FM029999") .then()。log()。all(); } – ravi

答えて

1

使用されることを意図していますとあなたはJUnitRestDocumentationを使用していません。それは@Ruleで注釈が付けパブリックフィールドなければならないことを意味しJUnitのルールとして使用するように設計されています:ルールなので

@Rule 
public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(); 

は春RESTドキュメントを設定することができ、JUnitのは、自動的に各テストのためrestDocumentationを呼び出しますことを意味し、テスト固有のコンテキストを解体します。このようにしてrestDocumentationが呼び出されていないため、コンテキストが設定されていないため、NullPointerExceptionが発生しています。

あなたはキュウリを使用している方法を説明していない、しかし、あなたが使用している場合、それはあなたが上記のように@Rule -annotatedフィールドとしてrestDocumentationを宣言することで、問題を解決することができるはずJUnit runnerです。 JUnitランナーを使用していない場合は、代わりにSpring REST DocsのManualRestDocumentationを使用する必要があります。 Spring REST Docsのリファレンスドキュメントには、JUnitを使用していないときにテストを設定する方法を説明するa sectionが含まれています。

1

私はJUnitRestDocumentationインスタンスを宣言したクラスを継承する複数のテストクラスを持っていたので、同じ問題がありました。私の間違いは、@Rule注釈を使用してルールを宣言したことでした。 @ClassRuleを使用し、インスタンスをstaticと宣言してください。

@ClassRule 
public static JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(); 
関連する問題