2017-03-02 9 views
1

Mockitoのテストケースを書き込んで、plantIDsを取得して何らかの処理を実行しようとしています。 私もテストケースを追加しました。Mockitoを使ったモック

これは私のテストケース

@RunWith(MockitoJUnitRunner.class) 
public class PlantDetailsServiceTest { 
    @InjectMocks PlantDetailsService service; 
    @Mock PlantDetailsHelper helperMock; 
    @Mock HttpURLConnection conn; 
    @Mock BufferedReader buf; 
    @Mock InputStream input; 
    @Mock InputStreamReader ir; 
    @Mock JSONObject json; 
    @Mock JSONArray arr; 
    @Mock List<String> plantResult; 


    @Test 
    public void TestGetPlantDetails() throws Exception 
    { 
     String plantID1= "23"; 

     List<String> plantResult = new ArrayList<String>(); 
     plantResult.add(plantID1); 
     Mockito.when(helperMock.getPlantIds()).thenReturn(plantResult); 
     URL url = new URL("**********/23"); 
     conn=(HttpURLConnection)url.openConnection(); 
     Mockito.when((HttpURLConnection)url.openConnection()).thenReturn(conn); 
     Mockito.when(conn.getResponseCode()).thenReturn(200); 
     input=conn.getInputStream(); 
     Mockito.when(conn.getInputStream()).thenReturn(input); 
     ir=new InputStreamReader(input); 
     Mockito.when(new InputStreamReader((conn.getInputStream()))).thenReturn(ir); 
     buf=new BufferedReader(ir); 
     Mockito.when(new BufferedReader(new InputStreamReader((conn.getInputStream())))).thenReturn(buf); 
     String output=buf.readLine(); 
     Mockito.when(buf.readLine()).thenReturn(output); 
     json=new JSONObject(output); 
     Mockito.when(new JSONObject(output)).thenReturn(json); 
     arr=json.getJSONArray("Data"); 
     Mockito.when(json.getJSONArray("Data")).thenReturn(arr); 
     assertThat(output,is(notNullValue())); 
     List<PlantDetailsDTO> plantDetailsList=new ArrayList<PlantDetailsDTO>(); 
     plantDetailsList=service.getPlantDetails(); 

    } 
} 

これは私が読んラインでエラーがスローされInputStream() .Iを開くことができません接続URLは、最終的なクラスであるかもしれないので。 openConnection()行にもエラーがあります。メソッド呼び出しがありません。

私はあなたがあざける注釈を可能にする2つの構成の詳細の一つ追​​加することを忘れていると思う
+0

エラーが発生した場合、あなたの 'helperMock'オブジェクトは' null'ですか? –

+0

com.test.PlantDetailsS​​erviceTest.TestGetPlantDetails(PlantDetailsS​​erviceTest.java:57)のヌルポインター例外 – Rindha

答えて

1

:それらがなければ

@RunWith(MockitoJUnitRunner.class) 
public class PlantDetailsServiceTest { 

または

@Before 
public void init(){ 
    MockitoAnnotations.initMocks(this); 
} 

を、mockitoは、このように、@モックさんをインスタンス化していませんあなたはnullポインタの例外を取得します。

+0

ありがとうございました。コードを投稿できますか? – Rindha

+0

先に進んでください –

+1

m8を参照してください。その方法は単体テストの準備ができていません。必要なのは、それをリファクタリングし、そのアルゴリズムの特定の部分を専門にするいくつかのヘルパークラスを作成することです。次に、これらのクラスの小規模パブリックメソッドを単体テストします。その方法を今のようにテストしようとすると、たとえそれが可能であっても、誰もそれらのテストを理解することはできません。将来、これらのテストは無視されます。私はリファクタリングが苦痛であることを知っていますが、そのようなレガシーコードをテストする唯一の方法はありません。 –

関連する問題