2016-08-26 20 views
0

私は、Springドキュメントを自分のプロジェクトに統合するためのチュートリアルに従っていますが、私はテストを実行するときにnullpointerexceptionを実行しています。Spring MockMvcテスト:ヌルポインタ例外

すべてのドキュメントビットを取り除くと、エラーは消えます。ですから、restDocumentation変数を削除すると、セットアップメソッドとテストのドキュメントビットが渡されます。

java.lang.NullPointerException 
at org.springframework.test.web.servlet.MockMvc.applyDefualtResultActions(MockMvc.java:195) 
at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:163) 
at //.//.//.//.//.ApiDocs.getConfig(ApiDocs.java:67) 
at org.springframework.test.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) 
at org.springframework.test.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) 
at 
org.springframework.restdocs.RestDocumentation$1.evaluate(RestDocumentation.java:59) 
at org.springframework.test.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) 
at org.springframework.test.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) 
at org.springframework.test.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) 
    at org.springframework.test.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:75) 
    at org.springframework.test.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:75) 
    at org.springframework.test.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) 
+0

[NullPointerExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) – xenteros

答えて

2

何もあなたに値を代入していないです:ここで

は私のテストクラスは、私は(私が原因のプライバシーに私のクラスのパッケージを大幅に削減しました)取得していますエラー

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(loader = AnnotationConfigWebContextLoader.class, classes = { ContextConfiguration.class }) 
@WebAppConfiguration 
public class ApiDocs { 

@Rule 
public RestDocumentation restDocumentation = new RestDocumentation(
     "${project.basedir}/target/generated-snippets"); 

private RestDocumentationResultHandler document; 

@Autowired 
private WebApplicationContext context; 

private MockMvc mockMvc; 

@Autowired 
Config Config; 

@Before 
public void setUp() { 

    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) 
      .apply(documentationConfiguration(this.restDocumentation)).alwaysDo(this.document).build(); 

} 

@Test 
public void getConfig() throws Exception { 

    this.mockMvc.perform(get("/config").accept(MediaType.APPLICATION_JSON)) 
      .andExpect(status().isOk()).andDo(document("index")); 
} 
} 

ですthis.documentフィールドですのでnullです。 alwaysDoにそれを渡してからNullPointerExceptionが発生します。

常に起こりたいことを設定する必要があります。たとえば、あなたのsetUp方法の先頭にこれを追加することによって:

this.document = document("{method-name}", 
     preprocessRequest(removeHeaders("Foo")), 
     preprocessResponse(prettyPrint())); 

documentationでこれについての詳細な情報があります。

+0

ありがとうございました。それはうまくいった。 Noobは私のところで間違っている。 – Qad

+0

それは正しい答えと多分upvoteとしてそれを受け入れてください:)私は同じ愚かな間違いをした、私はこれを逃したチュートリアルを推測すると私は気付かなかった。とにかく。 '' {method-name} ''の代わりに '' {class-name}/{method-name} '''を使ってテストを区別してください。 –

関連する問題