为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2021-12-01 15:41:26
我有一个方法,我必须将其绘制到接口并编写用于搜索 nullPointerExc 的测试。这是方法:boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) {      return !currentGroupAdm.getDocs().equals(groupAdm.getDocs());      }getDocs 方法中的某处为空。我用方法创建了接口 Changer:boolean hasDocsChangedRequired();我使用与以前使用 SOLID 规则相同的主体方法将其实现为类我有一个问题,如何使用 mockito 编写测试来完全覆盖这个布尔函数?
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您可以编写测试来检查您的功能,我假设该功能不是静态的。如果您想让它成为静态,那么您只需删除这两行


@InjectMocks

ChangerImpl 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));

  }


}



查看完整回答
反对 回复 2021-12-01
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

你的方法的输出


boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) { 

    return !currentGroupAdm.getDocs().equals(groupAdm.getDocs()); 

}

完全取决于您的两个输入对象。


换句话说:您只需要提供输入对象,这些对象可以为特定测试提供您想要提供的内容。意思是:您可能想要编写一个测试,其中currentGroupAdm.getDocs()给出的结果等于groupAdm.getDocs(),并且两个调用给出的结果不相等。


理想情况下,您不需要在这里模拟任何内容。


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信