如何使用Mockito测试空隙方法



"代码"部分中的下面发布的方法返回void。我想知道如何测试返回无效的方法。我检查了一些答案,但是使用了" dothrow()",但在我的情况下,该方法没有引发任何例外

请让我知道如何测试方法返回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);
    }
}

您到底要测试什么?这是"当调用setImageOnImageView(RequestCreator, ImageView)时,它调用RequestCreator.into(ImageView)"?

的测试。

如果您要测试的是,您不想测试它"返回void"。相反,我会推荐这样的东西:

@Test
public void itInvokesRequestCreatorIntoOnProvidedImageView() {
    RequestCreator creator = mock(RequestCreator.class);
    ImageView imageView = mock(ImageView.class);
    setImageOnImageView(creator, imageView);
    verify(creator).into(imageView);
}

如果要验证一个void方法没有抛出任何东西,则可以使用assertdoesnotthrows方法如下

断言,所提供的可执行文件的执行不会引发任何例外。用法注释尽管从测试方法引发的任何例外都会导致测试失败,但在某些用例中,明确断言在测试方法中没有给定代码块的例外情况是有益的。

 Assertions.assertDoesNotThrow(() -> testCl.voidM("test"...));

如果您的课程中有一些依赖项,则可以使用验证来检查该依赖性是否被调用。

相关内容

  • 没有找到相关文章

最新更新