Sonar代码覆盖率使用mockito满足条件

llycmphe  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(141)

我正在努力增加我的项目的代码覆盖率,并且在使我的单元测试用例达到下面代码(#def)中的else块方面面临挑战

Future<List<String>> myList = this.getSomeDetails(mobileNumber,user);
 myList.onComplete( result -> 
 {
    if(result.succeeded())
    {
          List<String> mobileList  = result.result();
          if(mobileList.isEmpty()){
           //some code #abc
          }
          else{
            //some code #def
         }
    }
});

这是我在UT中尝试过的,但不知何故,它仍然返回true并且else块没有执行。你知道我怎么通过我的UT覆盖其他街区吗?

List mockedList =Mockito.mock(List.class);
    Mockito.when(mockedList.isEmpty()).thenReturn(false);
cnjp1d6j

cnjp1d6j1#

我假设你的“result”是在onComplete()中创建的。
如果是这种情况,您就不能模拟它,除非结果的“生产代码”被外部化。(即注入工厂)
但这个条件看起来很容易实现。看起来,你只需要在列表中至少有一个值来运行测试(以到达else分支)。

相关问题