猿问

Mock 方法绘制到用于搜索空值的接口

我有一个方法,我必须将其绘制到接口并编写用于搜索 nullPointerExc 的测试。这是方法:

boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) { 
    return !currentGroupAdm.getDocs().equals(groupAdm.getDocs());
     }

getDocs 方法中的某处为空。

我用方法创建了接口 Changer:

boolean hasDocsChangedRequired();

我使用与以前使用 SOLID 规则相同的主体方法将其实现为类

我有一个问题,如何使用 mockito 编写测试来完全覆盖这个布尔函数?


慕森卡
浏览 156回答 2
2回答

慕桂英546537

您可以编写测试来检查您的功能,我假设该功能不是静态的。如果您想让它成为静态,那么您只需删除这两行@InjectMocksChangerImpl changer;代替“转换器”,您可以调用相应的实现类。希望这可以帮助。@RunWith(MockitoJUnitRunner.class)public class TestSampleTest {  @InjectMocks  ChangerImpl changer;  @Test(expected = NullPointerException.class)  public void test1(){    GroupProvider currentGroupAdm = mock(GroupProvider.class);    doReturn(null).when(currentGroupAdm).getDocs();    GroupProvider groupAdm = mock(GroupProvider.class);    oReturn("sample2").when(groupAdm).getDocs();    changer.hasDocsChangedRequired(currentGroupAdm, groupAdm);  }  @Test  public void test2(){    GroupProvider currentGroupAdm = mock(GroupProvider.class);    doReturn("sample1").when(currentGroupAdm).getDocs();    GroupProvider groupAdm = mock(GroupProvider.class);    doReturn("sample2").when(groupAdm).getDocs();    Assert.assertThat(changer.hasDocsChangedRequired(currentGroupAdm, groupAdm), is(true));  }  @Test  public void test3(){    GroupProvider currentGroupAdm = mock(GroupProvider.class);    doReturn("sample1").when(currentGroupAdm).getDocs();    GroupProvider groupAdm = mock(GroupProvider.class);    doReturn("sample1").when(groupAdm).getDocs();    Assert.assertThat(changer.hasDocsChangedRequired(currentGroupAdm, groupAdm), is(false));  }}

收到一只叮咚

你的方法的输出boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) {     return !currentGroupAdm.getDocs().equals(groupAdm.getDocs()); }完全取决于您的两个输入对象。换句话说:您只需要提供输入对象,这些对象可以为特定测试提供您想要提供的内容。意思是:您可能想要编写一个测试,其中currentGroupAdm.getDocs()给出的结果等于groupAdm.getDocs(),并且两个调用给出的结果不相等。理想情况下,您不需要在这里模拟任何内容。
随时随地看视频慕课网APP

相关分类

Java
我要回答