繁体   English   中英

有什么方法可以一次性加载 Spring Boot application 中的配置?

[英]Is there any way to load the configuration in Spring Boot application for one time?

我正在寻找一些建议或最佳实践来实现 spring 引导应用程序的单元测试。

我有多个单元测试类,在每个类中,我需要添加如下配置:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootApplication.class)
public class ServiceRequestControllerTest{
...
}

因此,当我运行目标 maven 测试( mvn clean test )时,会多次加载 spring 配置。 例如,我有五个单元测试类,所以它会加载配置五次,这会减慢项目的构建速度。

问题:有没有办法为所有单元测试类只加载一次这个配置?

使用@ContextConfiguration注释。 它的默认行为是在测试之间重用上下文。

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SpringBootApplication.class)
public class ServiceRequestControllerTest{
...
}

我们必须始终处理异常,因为它允许我们拥有更大的应急控制。 还必须始终使用 JSON 作为 Rest 响应的基础,所以我们会有这样的事情:

@RestController
public class ControllerAddress {

    @PostMapping("/address")
    public ResponseEntity<?> postAddress(@RequestBody String address) {
        Map<String, Object> response = new HashMap<>();
        try {
            response.put("state", true);
            return new ResponseEntity<>(response, HttpStatus.OK);
        } catch (Exception e) {
            e.printStackTrace();
            response.put("message", e.getMessage());
            return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

但是,如果您不想使用 JSON 并且您希望 boolean 变量 true / false 直接响应,则可以更改以下行:

response.put("state", true);
return new ResponseEntity<>(response, HttpStatus.OK);

为了:

return new ResponseEntity<>(true, HttpStatus.OK);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM