如何将JUnit测试编写到Spring-MVC Controller类中?

Dja*_*111 0 java junit spring-mvc junit4

我想为我的UserController课程写一个JUnit测试(Java单元),但是我不知道该怎么做。

UserController:

@RestController
@RequestMapping(CompositeController.ENTRY)
public class UserController {
protected final static String ENTRY = "/demo/v1/composite";
private UserService userService;

@Autowired
public UserController(UserService userService) {
    this.userService = userService;
}


 @GetMapping(path = "/isadmin")
 public ResponseEntity<Boolean> checkadmin(@RequestHeader String nickname){

 return userService.checkifadmin(nickname);

 }
Run Code Online (Sandbox Code Playgroud)

UserService:

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

@Service
public interface UserService {
ResponseEntity<Boolean> checkifadmin(String nickname);
}
Run Code Online (Sandbox Code Playgroud)

UserServiceImpl:

public class UserServiceImpl implements UserService {

 private final String userBaseAdress = "http://localhost:7777";
 private final String userBasePath = "/demo/v1/user";

 public ResponseEntity<Boolean> checkifadmin(String nickname) {          
        HttpHeaders headers = new HttpHeaders();            
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.set("nickname", nickname);       
        HttpEntity<String> entity = new HttpEntity<String>(headers);             
        RestTemplate restTemplate = new RestTemplate();          
        ResponseEntity<Boolean> response = restTemplate.exchange(userBaseAdress + userBasePath + "/isadmin",
                HttpMethod.GET, entity, Boolean.class);         
        return response;
    }
}
Run Code Online (Sandbox Code Playgroud)

S.K*_*.K. 5

您可以使用Spring的MockMvc。在以下位置检查详细信息:https : //spring.io/guides/gs/testing-web/

另一种有用的方法是根本不启动服务器,而仅测试下一层,Spring在该层处理传入的HTTP请求并将其交给您的控制器。这样,几乎将使用整个堆栈,并且将以完全相同的方式调用您的代码,就像处理真实的HTTP请求一样,而无需启动服务器。为此,我们将使用Spring的MockMvc,我们可以通过在测试用例上使用@AutoConfigureMockMvc注释来要求为我们注入该代码: