【发布时间】:2017-06-21 00:06:52
【问题描述】:
我是 Spring Boot 的新手,我非常喜欢它,尤其是在消除样板代码方面。
我创建了一个测试类来测试我的NBRController:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = NewBusinessRevitalizationApplication.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = {"management.port=0"})
public class NBRControllerTest extends TestCase {
@LocalServerPort
private int port;
@Value("${local.management.port}")
private int mgt;
@Autowired
private TestRestTemplate testRestTemplate;
@Test
public void getApplicationByAgencyIdAndStatusTest() {
String uri = "http://localhost:" + this.port + "/nbr-services/applications/{status}?agencyIds=123456,56765,678576";
Map<String, String> vars = new HashMap<String, String>();
vars.put("status", "SAVED");
ResponseEntity<String> response = testRestTemplate.getForEntity(uri, String.class, vars);
assertEquals(HttpStatus.OK, response.getStatusCode());
}
}
如果我在调试模式下运行它,我只能调试 Test 类而不是我的 NBRController 类:
@RestController
@RequestMapping("/nbr-services")
public class NBRController {
@Autowired
private NBRServices nbrServices;
private static Logger logger = LoggerFactory.getLogger(NBRController.class);
@RequestMapping(value = "/configuration/environment/{environment}", method = RequestMethod.GET)
@ResponseBody
public String getConfiguration(@PathVariable("environment") String environment) throws RemoteException {
logger.debug("environment={}", environment);
String result = nbrServices.getConfiguration(environment);
return result;
}
}
我尝试设置 Tomcat 调试端口,但运气不佳。
我可以调试NBRController 的唯一方法是在调试模式下运行它并从浏览器调用我的 RestAPI,但我想使用我的单元测试。提前致谢!
【问题讨论】:
-
从实际 uri 获取响应有点多余。 Spring Boot 测试有
MockMvc用于测试其余的 api。关注本教程了解更多详情:springboottutorial.com/… -
这是您的实际代码吗?您在测试中尝试连接的端点在控制器中不存在。
标签: spring-boot testing spring-test