Java Junit滚筒试验方法

Java Junit滚筒试验方法,java,rest,junit,Java,Rest,Junit,我有个问题, 我为我的控制器方法创建了一个junit测试,但我不确定这个测试是否合适。测试通过了,但身体对我来说不清楚。 这是我要测试的方法: @PostMapping("/addPeopleToTeams/{teamId}/{personId}") @ResponseBody public ResponseEntity<?> addPeopleToTeam(@PathVariable Long teamId, @PathVariable Long personId)

我有个问题, 我为我的控制器方法创建了一个junit测试,但我不确定这个测试是否合适。测试通过了,但身体对我来说不清楚。 这是我要测试的方法:

@PostMapping("/addPeopleToTeams/{teamId}/{personId}")
    @ResponseBody
    public ResponseEntity<?> addPeopleToTeam(@PathVariable Long teamId, @PathVariable Long personId) {
        TeamsAndPersonsId teamsAndPersonsId = new TeamsAndPersonsId(personId, teamId);
        teamService.findTeamById(teamsAndPersonsId.getTeamId());
        personService.findById(teamsAndPersonsId.getPersonId());
        teamService.addPersonsToTeams(personId, teamId);
        return ResponseEntity.ok(teamsAndPersonsId);

    }

这不是一个愚蠢的想法,我有0次?这意味着我调用该方法0次?Smb知道如何更正此测试以将人员添加到团队?

您可以在+verifyNoMoreInteractions方法之后使用@After+verifyNoMoreInteractions方法,以确保除了调用您“期望的”之外,没有其他方法

在标记为@Test的每个方法之后,将调用任何带有@After注释的方法。(即,在每个测试用例之后)

verifyNoMoreInteractions,告诉我们,如果调用了任何方法(除了3方法)而不是作为param(teamService和personService)传递的mock的预期方法,那么测试用例将失败

@After
public void teamdown() {
    Mockito.verifyNoMoreInteractions(teamService, personService);
}

注意:假设,单元测试的when和verify部分您已经知道/计算出来了。如果你需要帮助,请告诉我

是的,看起来很愚蠢。我也不知道TeamDto和PersonDto是用来做什么的
addPeopleToTeam
只需要
id
s,而不是DTOsI使用此dto进行其他测试在这种情况下,我只需要一个正确的id。但我不知道如何修复此方法,使其看起来很好。然后,我将检查响应是否成功。没有DTO,也没有验证。此外,您还可以检查响应正文:断言
teamsandpersonId.getTeamId()==1
teamsandpersonId.getPersonId==1
。不幸的是,当我尝试时,所有内容都是红色的并且没有编译:/when(teamService.createTeam(teamDto))。然后返回(Reponse.ok().build());-我做了这样的事情,但反应是不确定的
@After
public void teamdown() {
    Mockito.verifyNoMoreInteractions(teamService, personService);
}