Java 与Mockito的集成测试';即使输入else语句,也无法获得保险
我试图在SpringBoot中对RESTAPI和Mockito进行一些集成测试。即使我在else语句中的代码得到了测试,它仍然不能覆盖我。我添加了一些System.out.println(),以确保代码在else语句中执行。当我查看调试控制台时,System.out.println()在控制台中输出,执行else语句,但代码仍然没有被覆盖检测到。仅检测到if语句。我删除了if-else语句,直接进入else语句中的代码,但仍然没有被检测到。我假设这可能是因为我使用的是forEach或Set。 单元测试类:Java 与Mockito的集成测试';即使输入else语句,也无法获得保险,java,spring,unit-testing,junit,mockito,Java,Spring,Unit Testing,Junit,Mockito,我试图在SpringBoot中对RESTAPI和Mockito进行一些集成测试。即使我在else语句中的代码得到了测试,它仍然不能覆盖我。我添加了一些System.out.println(),以确保代码在else语句中执行。当我查看调试控制台时,System.out.println()在控制台中输出,执行else语句,但代码仍然没有被覆盖检测到。仅检测到if语句。我删除了if-else语句,直接进入else语句中的代码,但仍然没有被检测到。我假设这可能是因为我使用的是forEach或Set。 单
@WebMvcTest(AuthController.class)
public class AuthControllerTests {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockBean
private UserRepository userRepository;
@MockBean
private RoleRepository roleRepository;
@MockBean
private UserDetailsServiceImpl userDetailsService;
@MockBean
private JwtUtils jwtUtils;
@MockBean
PasswordEncoder encoder;
@MockBean
AuthenticationManager authenticationManager;
@Test
public void testRegisterUser() throws Exception{
List <Role> listRoles = new ArrayList<>();
listRoles.add(new Role(ERole.ROLE_USER));
listRoles.add(new Role(ERole.ROLE_MODERATOR));
listRoles.add(new Role(ERole.ROLE_ADMIN));
Mockito.when(roleRepository.findByName(ERole.ROLE_USER)).thenReturn(java.util.Optional.ofNullable(listRoles.get(0)));
Mockito.when(roleRepository.findByName(ERole.ROLE_MODERATOR)).thenReturn(java.util.Optional.ofNullable(listRoles.get(1)));
Mockito.when(roleRepository.findByName(ERole.ROLE_ADMIN)).thenReturn(java.util.Optional.ofNullable(listRoles.get(2)));
Set<String> currentRoles = new HashSet<>();
currentRoles.add("admin");
currentRoles.add("mod");
currentRoles.add("user");
SignupRequest signupRequest = new SignupRequest();
signupRequest.setUsername("test");
signupRequest.setEmail("test");
signupRequest.setPassword("12341234");
signupRequest.setRole(currentRoles);
User user = new User(signupRequest.getUsername(),
signupRequest.getEmail(),
encoder.encode(signupRequest.getPassword()));
Set<String> strRoles = signupRequest.getRole();
System.out.println(strRoles);
Set<Role> roles = new HashSet<>();
if (strRoles == null) {
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(userRole);
System.out.println("enters if");
}
else {
strRoles.forEach(role -> {
switch (role) {
case "admin":
Role adminRole = roleRepository.findByName(ERole.ROLE_ADMIN)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(adminRole);
System.out.println("enters case admin");
break;
case "mod":
Role modRole = roleRepository.findByName(ERole.ROLE_MODERATOR)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(modRole);
System.out.println("enters case mod");
break;
default:
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(userRole);
System.out.println("enters case user");
}
});
}
user.setRoles(roles);
String url = "/auth/signup";
MvcResult mvcResult = mockMvc.perform(post(url).contentType("application/json")
.content(objectMapper.writeValueAsString(user))).andExpect(status().isOk()).andReturn();
int status = mvcResult.getResponse().getStatus();
System.out.println(status);
}
}
@WebMvcTest(AuthController.class)
公共类AuthControllerTests{
@自动连线
私有MockMvc-MockMvc;
@自动连线
私有对象映射器对象映射器;
@蚕豆
私有用户存储库用户存储库;
@蚕豆
私人角色扮演者角色扮演者;
@蚕豆
私有用户详细信息服务impl用户详细信息服务;
@蚕豆
私人JwtUtils JwtUtils;
@蚕豆
密码编码器;
@蚕豆
AuthenticationManager AuthenticationManager;
@试验
public void testRegisterUser()引发异常{
List listRoles=new ArrayList();
添加(新角色(ERole.Role_USER));
添加(新角色(ERole.Role_版主));
添加(新角色(ERole.Role_ADMIN));
Mockito.when(roleRepository.findByName(ERole.ROLE_USER)).thenReturn(java.util.Optional.ofNullable(listRoles.get(0));
Mockito.when(roleRepository.findByName(ERole.ROLE_-mediator)).thenReturn(java.util.Optional.ofNullable(listRoles.get(1));
Mockito.when(roleRepository.findByName(ERole.ROLE_ADMIN)).thenReturn(java.util.Optional.ofNullable(listRoles.get(2));
Set currentRoles=new HashSet();
currentRoles.add(“admin”);
currentRoles.add(“mod”);
currentRoles.add(“用户”);
SignupRequest SignupRequest=新的SignupRequest();
signupRequest.setUsername(“测试”);
signupRequest.setEmail(“测试”);
signupRequest.setPassword(“12341234”);
signupRequest.setRole(当前角色);
User User=新用户(signupRequest.getUsername(),
signupRequest.getEmail(),
encode(signupRequest.getPassword());
Set strRoles=signupRequest.getRole();
系统输出打印项次(strRoles);
Set roles=new HashSet();
如果(strRoles==null){
Role userRole=roleRepository.findByName(ERole.Role\u USER)
.orelsetrow(()->new RuntimeException(“错误:找不到角色”);
roles.add(userRole);
系统输出打印项次(“输入如果”);
}
否则{
strRoles.forEach(角色->{
交换机(角色){
案例“管理”:
Role adminRole=roleRepository.findByName(ERole.Role\u ADMIN)
.orelsetrow(()->new RuntimeException(“错误:找不到角色”);
roles.add(adminRole);
System.out.println(“输入案例管理员”);
打破
案例“mod”:
Role modRole=roleRepository.findByName(ERole.Role\u主持人)
.orelsetrow(()->new RuntimeException(“错误:找不到角色”);
roles.add(modRole);
System.out.println(“输入案例模块”);
打破
违约:
Role userRole=roleRepository.findByName(ERole.Role\u USER)
.orelsetrow(()->new RuntimeException(“错误:找不到角色”);
roles.add(userRole);
System.out.println(“输入案例用户”);
}
});
}
user.setRoles(角色);
字符串url=“/auth/signup”;
MvcResult MvcResult=mockMvc.perform(post(url).contentType(“应用程序/json”)
.content(objectMapper.writeValueAsString(user)).andExpect(status().isOk()).andReturn();
int status=mvcResult.getResponse().getStatus();
系统输出打印项次(状态);
}
}
AuthController类:
@PostMapping("/signup")
public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRequest) {
AlreadyExistsError AlreadyExistsError = new AlreadyExistsError();
if (userRepository.existsByUsername(signUpRequest.getUsername())) {
AlreadyExistsError.setUserAlreadyExists(true);
}
if (userRepository.existsByEmail(signUpRequest.getEmail())) {
AlreadyExistsError.setEmailAlreadyExists(true);
}
if (AlreadyExistsError.hasAnyErrors()){
return ResponseEntity
.badRequest()
.body(AlreadyExistsError);
}
// Create new user's account
User user = new User(signUpRequest.getUsername(),
signUpRequest.getEmail(),
encoder.encode(signUpRequest.getPassword()));
Set<String> strRoles = signUpRequest.getRole();
Set<Role> roles = new HashSet<>();
if (strRoles == null) {
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(userRole);
}
else {
strRoles.forEach(role -> {
switch (role) {
case "admin":
Role adminRole = roleRepository.findByName(ERole.ROLE_ADMIN)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(adminRole);
break;
case "mod":
Role modRole = roleRepository.findByName(ERole.ROLE_MODERATOR)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(modRole);
break;
default:
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
roles.add(userRole);
}
});
}
user.setRoles(roles);
userRepository.save(user);
return ResponseEntity.ok(new MessageResponse("User registered successfully!"));
}
@CrossOrigin
@GetMapping("/users")
@ResponseBody
public List<User> searchUser(@RequestParam String username){
return userRepository.findByUsernameContaining(username);
}
@PostMapping(“/signup”)
公共响应注册器(@Valid@RequestBody SignupRequest SignupRequest){
ALREADYEXISTERROR ALREADYEXISTERROR=新的ALREADYEXISTERROR();
if(userRepository.existsByUsername(signUpRequest.getUsername())){
alreadyexistError.setUserAlreadyExists(true);
}
if(userRepository.existsByEmail(signUpRequest.getEmail()){
AlreadyExistError.setEmailAlreadyExists(true);
}
if(alreadyExisterRor.hasAnyErrors()){
返回响应性
.badRequest()文件
.机构(已存在);
}
//创建新用户的帐户
User User=新用户(signUpRequest.getUsername(),
signUpRequest.getEmail(),
encode(signUpRequest.getPassword());
Set strRoles=signUpRequest.getRole();
Set roles=new HashSet();
如果(strRoles==null){
Role userRole=roleRepository.findByName(ERole.Role\u USER)
.orelsetrow(()->new RuntimeException(“错误:找不到角色”);
roles.add(userRole);
}
否则{
strRoles.forEach(角色->{
交换机(角色){
案例“管理”:
Role adminRole=roleRepository.findByName(ERole.Role\u ADMIN)
奥莱斯特先生(