2017-09-17 11 views
1

以下のコードセクションに掲載されているメソッドはvoidを返します。 voidを返すメソッドをテストする方法を知りたい。 私はいくつかの答えをチェックしましたが、例外を渡して "doThrow()"を使用していましたが、私の場合は例外がスローされませんMockitoを使ってvoidメソッドをテストするには

メソッドをテストしてvoidを返す方法を教えてください。

コード

public void setImageOnImageView(RequestCreator requestCreator, ImageView imgView) { 
    requestCreator.into(imgView); 
} 

テスト

public class ValidationTest { 
    @Mock 
    private Context mCtx = null; 
    @Rule 
    public MockitoRule mockitoRule = MockitoJUnit.rule(); 

    @Before 
    public void setUp() throws Exception { 
     mCtx = Mockito.mock(Context.class); 
     Assert.assertNotNull("Context is not null", mCtx); 
    } 

    @Test 
    public void setImageOnImageView() throws Exception { 
     Uri mockUri = mock(Uri.class); 
     RequestCreator requestCreator = Picasso.with(mCtx).load(mockUri); 
     RequestCreator spyRequestCreator = spy(requestCreator); 
     ImageView imageView = new ImageView(mCtx); 
     ImageView spyImageView = spy(imageView); 

     doThrow().when(spyRequestCreator).into(spyImageView); 
     //spyRequestCreator.into(spyImageView); 
    } 
} 

答えて

0

あなたがテストするために、正確に何をしようとしていますか?そのテストは "setImageOnImageView(RequestCreator, ImageView)が呼び出されたとき、それはRequestCreator.into(ImageView)"を呼び出しますか?

これがテストしようとしているのであれば、「返品がありません」ということをテストする必要はありません。むしろ、私は次のようなものをお勧めします:

@Test 
public void itInvokesRequestCreatorIntoOnProvidedImageView() { 
    RequestCreator creator = mock(RequestCreator.class); 
    ImageView imageView = mock(ImageView.class); 

    setImageOnImageView(creator, imageView); 
    verify(creator).into(imageView); 
} 
+0

ありがとう、今それは動作します。私はここで私の質問を見てください:https://stackoverflow.com/questions/46267298/method-not-mocked-using-spy私はメソッドをテストしようとしているが、テストケースが失敗する – user2121

関連する問題