如何使用Mockito在Junit中测试开关案例

PratikJava:

我可以测试代码,但是代码覆盖范围不包括第二种开关情况。

请参考下面的代码。

 { @PersistenceContext
    EntityManager manager;

    @Autowired
    TurbineRepository turbineRepository;

    @Autowired
    WorkRepository workRepository;

    public Dropdown getDropdown(String type) {
        Dropdown dropdownDTO = new Dropdown();
        switch(type) {
        case "turbine":
            List<String> turbinesList = turbineRepository.listOfTurbines();
            dropdownDTO.setTurbinesList(turbinesList);
            break;
        case "wocreate":
            List<String> turbineList = turbineRepository.listOfTurbines();
            dropdownDTO.setTurbinesList(turbineList);
            List<ParamsProjection> params = workRepository.findBy();
            Map<String, List<ParamsProjection>> result = params.stream()
                    .collect(Collectors.groupingBy(ParamsProjection::getType));
            dropdownDTO.setParams(result);
        default:
        }
        return dropdownDTO;

    }

下面是我的测试代码。

{
    @InjectMocks
    private Services service;
    
    @Mock
    private WorkRepository workRepo;
    
    @Mock
    private TurbineRepository turbineRepo;
    
    @Mock
    private ParamsProjection paramProject1;
    
    @Test 
    public void getDropDown() {
        
        Dropdown dto = new Dropdown();
        List<String> turbineList = new ArrayList<String>();
        String type = "turbine";
        switch(type) {
        case "turbine" :
        Mockito.when(turbineRepo.listOfTurbines()).thenReturn(turbineList);
        dto.setTurbinesList(turbineList);
        assertNotNull(dto);
        break;
        
        case "wocreate": 
        DropdownDTO dto2 = new DropdownDTO();
        Mockito.when(turbineRepo.listOfTurbines()).thenReturn(turbineList);
        dto2.setTurbinesList(turbineList);
        List<ParamsProjection> param = new ArrayList<ParamsProjection>();
        Mockito.when(workRepo.findBy()).thenReturn(param);
        
        Map<String, List<ParamsProjection>> result = param.stream()
                .collect(Collectors.groupingBy(ParamsProjection::getType));
        
        dto2.setParams(result);
        assertNotNull(dto2);
        break;
}
        assertNotNull(service.getDropdown("turbine"));
}

因为我已经声明了一个带有用于测试的值的字符串变量,所以我无法涵盖第二个switch语句。我已经尝试过if-else情况,但是发生相同的问题。还有其他方法可以做到这一点吗?

Mureinik:

type始终是"turbine",因此只测试了这种情况。进行两种不同的测试是有意义的,每种类型一种:

@Test 
public void getDropDownTurbine() {
    
    Dropdown dto = new Dropdown();
    List<String> turbineList = new ArrayList<String>();
    String type = "turbine";
    Mockito.when(turbineRepo.listOfTurbines()).thenReturn(turbineList);
    dto.setTurbinesList(turbineList);
    assertNotNull(dto);
    assertNotNull(service.getDropdown("turbine"));
} 


@Test 
public void getDropDown() {
    
    List<String> turbineList = new ArrayList<String>();
    String type = "wocreate";
    DropdownDTO dto2 = new DropdownDTO();
    Mockito.when(turbineRepo.listOfTurbines()).thenReturn(turbineList);
    dto2.setTurbinesList(turbineList);
    List<ParamsProjection> param = new ArrayList<ParamsProjection>();
    Mockito.when(workRepo.findBy()).thenReturn(param);
    
    Map<String, List<ParamsProjection>> result = param.stream()
            .collect(Collectors.groupingBy(ParamsProjection::getType));
    
    dto2.setParams(result);
    assertNotNull(dto2);

    assertNotNull(service.getDropdown("wocreate"));
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

测试开关案例 - 单元测试

如何使测试案例在Junit中失败?

在Java中,如何使用断言测试在JUnit无效的Mockito的方法?

如何在JUnit测试中使用Mockito?

如何使用JUnit或Mockito测试匿名方法?

如何使用junit和mockito测试springjdbcTemplate

测试开关中的多种情况,例如OR(||)

JUnit测试案例错误:“地址已在使用中:绑定”

如何使用Mockito在Junit测试用例中验证logger.error(String message,Throwable t)

如何使用Mockito和JUnit在Spring Boot中测试DELETE方法

JUnit测试的InputStreamReader的使用的Mockito

使用Mockito进行JUnit测试

如何使用Junit和Mockito测试Spring验证器

如何使用JUnit和Mockito测试自定义JsonSerializer

如何使用Junit和Mockito测试DaoImpl方法

如何使用Junit和Mockito测试Sum Double值?

如何使用JUnit和Mockito测试我的JwtAuthentication类?

如何使用JUnit和/或Mockito测试void方法

如何使用 mockito 和 junit 测试此功能?

如何为JUnit测试案例禁用EhCache

如何在Junit测试案例中在JcrPackageManager中测试汇编api

测试开发中的主题

如何使用Mockito在Flutter中测试StreamBuilder?

GIT的ls远程测试开关始终返回false

新测试开始时如何禁用关闭浏览器的Ant Junit Task

如何使用ajax onclick执行php开关案例并将其打印在H标签中?

如何使用JUnit在Spring中测试ConfigurationProperties?

如何在Junit测试案例中模拟Spring JDBCTemplate执行方法

如何以优美的方式使用junit 5组测试(收集用户案例)