2017-02-13 12 views
2

Mockitoを使用してJUnitテストケースを作成していて、NullPointerExceptionが発生しています。MockitoのJUnitテストケースがNullPointerExceptionをスローする

ビジネスコード

public XRImage getImage(String imgId, List tagList) { 
    _paramsMap.printContent(); 
    return _paramsMap.getImage(imgId, tagList); 
} 

テストコード

@Test 
public void getImageTest() { 
    String imgId = new String("Test"); 
    List requiredTags = null; 
    XRImage xRImage = Mockito.mock(XRImage.class); 
    ImageParamsMap imageParamsMap = Mockito.mock(ImageParamsMap.class); 
    imageParamsMap.addImage(imgId); 
    when(imageParamsMap.getImage(imgId, requiredTags)).thenReturn(Mockito.mock(XRImage.class)); 
    XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags); 
    assertNotNull(getImage1); 
} 
+1

'acquireParamsManager'をどのように初期化しますか?あなたはこのオブジェクトにモックを注入する必要があります –

+0

私は@InjectMocksを使ってそれを行いました – bhavya

答えて

0

簡単:

List requiredTags = null; 

...

XRImage getImage1=acquisitionParamsManager.getImage(imgId,requiredTags); 

あなたはそのリストのヌルに渡しています!代わりにの空のリストをお試しください。 これはjava.util.Listです。実際にrawジェネリックタイプを作成しています。あなたはむしろList<Whatever>のような何かを行うべきです!

0

インスタンス変数_paramsMapの代わりにimageParamsMap模擬オブジェクトが使用されると思われますか?

もしそうなら、メソッドを呼び出す前にimageParamsMapacquisitionParamsManagerに何らかの形で設定する必要があります。例えば、利用可能なセッターがあると仮定すると:

acquisitionParamsManager.setParamsMap(imageParamsMap); 
XRImage getImage1 = acquisitionParamsManager.getImage(imgId, requiredTags); 

セッターが利用できない場合、モックインジェクションは別のオプションになります。それを超えると、例外がスローされた場所で追加のコードや行番号を付けずにデバッグすることは困難です。


無関係が、あなたのテストケースにaddImage()を呼び出すと、実際には何も達成していません。このメソッドが呼び出されたことを確認したい場合は、アサート後に次のステートメントを追加してみてください:

verify(imageParamsMap).addImage(imgId); 
関連する問題