【问题标题】:How to make a delete test on my service class?如何对我的服务类进行删除测试?
【发布时间】:2021-05-11 18:37:23
【问题描述】:

所以我在我的 Rest API 上进行 Spring 启动测试,我很挣扎。 当我在我的服务类上搜索测试并尝试它们时,它们大多不起作用,或者我的 SonarQube 没有说我的服务类中的删除方法已经过测试。 这就是为什么我来到这里并想要一个可以工作并涵盖代码的propper删除单元测试的示例。如果我有这个测试,我可以继续并尝试自己进行其他测试。

这是我的服务类:

@Service
@Transactional
public class PartyLeaderService {
    @Autowired
    private PartyLeaderRepository partyLeaderRepository;
    @Autowired
    ModelMapper modelMapper;
    public List<PartyLeader> listAllPartyLeaders() {
        return partyLeaderRepository.findAll();
    }

    public void savePartyLeader(PartyLeaderDto partyLeaderDto) {
        PartyLeader partyLeader = convertToEntity(partyLeaderDto);
        partyLeaderRepository.save(partyLeader);
    }

    public PartyLeaderDto getPartyLeader(Integer id) {
        PartyLeader partyLeader = partyLeaderRepository.findById(id).orElse(null);
        return convertToDto(partyLeader);
    }


    public void deletePartyLeader(Integer id) {
        partyLeaderRepository.deleteById(id);
    }
    public void deleteAllLeaders() {
        partyLeaderRepository.deleteAll();}

    private PartyLeaderDto convertToDto(PartyLeader partyLeader) {
        PartyLeaderDto partyLeaderDto = modelMapper.map(partyLeader, PartyLeaderDto.class);
        return partyLeaderDto;
    }
    private PartyLeader convertToEntity(PartyLeaderDto partyLeaderDto) {
        PartyLeader entity = new PartyLeader();
        entity.setId(partyLeaderDto.getId());
        entity.setName(partyLeaderDto.getName());
        entity.setApperance(partyLeaderDto.getApperance());

        return entity;
    }
}

我还希望它模拟测试,以便在我的数据库中实际删除任何内容。 谁能帮我? 提前致谢!

【问题讨论】:

    标签: spring-boot unit-testing spring-test


    【解决方案1】:

    尝试使用任何模拟框架,例如 Mockito。

    例如,您将在这两个页面上找到所需的解决方案 https://www.tutorialspoint.com/mockito/mockito_junit_integration.htm https://www.tutorialspoint.com/mockito/mockito_verifying_behavior.htm

    所以基本上,你的测试看起来像

    @RunWith(MockitoJUnitRunner.class)
    public class PartyLeaderServiceTest {
        @InjectMocks
        PartyLeaderService partyLeaderService = new PartyLeaderService();
        @Mock
        ModelMapper ModelMapper;
        @Mock
        PartyLeaderRepository partyLeaderRepository;
    
        @Test
        public void testAdd(){
            // for given input
            final Integer id = 223;
            // when the desired action performed
            partyLeaderService.deletePartyLeader(id);
            // then verify
            Mockito.verify(partyLeaderRepository).deleteById(id);
        }
    }
    

    广告偏离路线别忘了添加 Mockito 依赖

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2012-08-26
      相关资源
      最近更新 更多