【发布时间】:2021-10-23 14:52:26
【问题描述】:
你能帮我如何在这种方法中通过 junit 测试覆盖 if 语句:
这是我在控制器“用户”中的方法:
@GetMapping(value = "/informationUser")
public ResponseEntity<Utilisateur> getAllInformationAboutUser() {
Utilisateur user = null; // Fully covered By tests
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // Fully covered By tests
if (authentication != null) { // Partially covered by Tests
user = userService.findUserByLogin(authentication.getName()); // Not covered by Tests
}
return new ResponseEntity<>(user, HttpStatus.OK); Fully covered By tests
}
我的问题是 if 语句的 2 行,我不知道我想如何覆盖它们。
这是我对这个方法的测试代码:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
ResponseEntity<Utilisateur> responseEntity16 = userController.getAllInformationAboutUser();
SecurityContextHolder.clearContext();
ResponseEntity<Utilisateur> responseEntity15 = userController.getAllInformationAboutUser();
提前感谢您的帮助
【问题讨论】:
-
模拟身份验证,并使其返回一个对象。
-
在运行此测试(第二次)之前,只需
SecurityContextHolder.getContext().setAuthentication(null)或SecurityContextHolder.clearContext() -
@Valijion :我试图这样做,但 if 语句中的行仍然没有覆盖
-
@Maroun : 还是一样,还没有被覆盖
-
@Valijon 我需要使身份验证与 null 不同,才能完全覆盖该方法