【发布时间】:2020-10-23 11:27:16
【问题描述】:
我正在学习 Junit 5 和测试用例。 我正在使用 Spring Boot 版本 '2.2.6.RELEASE 和 JUnit 5, 在我的应用程序中,我有一个基于属性文件中的布尔标志进行处理的方法。
\src\main\resources\application.properties
#data base connection properties
spring.app.datasource.url=jdbc:mysql://localhost:3306/student_db
spring.app.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.app.datasource.username=root
spring.datasource.password=root
spring.app.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
#additional properties
spring.property.name=shrikant
spring.property.enable=false
数据库连接属性用于创建数据库连接
数据源.java
@Value("${spring.app.datasource.url}")
private String url;
@Value("${spring.app.datasource.driver-class-name}")
private String className;
@Value("${spring.app.datasource.username}")
private String userName;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.app.jpa.properties.hibernate.dialect}")
private String dialect;
控制器类
@RestController
public class Controller {
@Value("${spring.property.name}")
private String name;
@Value("${spring.property.enable}")
private boolean status;
public void validateObject(String surName) {
if (status) { # if this flag is true then only process
System.out.println("name= " + name);
System.out.println("surName= " + surName);
}
}
ControllerTest.java
@SpringBootTest
class ControllerTest {
@Autowired
private Controller controller;
@Test
void show() {
controller.validateObject("sharma");
}
默认情况下,该标志为 false,因此每次测试用例运行时它都不会处理对象。 所以我尝试在测试文件夹中创建 aplication.properties
\src\test\resources\application.properties
spring.property.name=vishal
spring.property.enable=true
但现在它给了我一个错误
Could not resolve placeholder 'spring.app.datasource.url'
但我不想提供数据库连接 URL,我在测试时没有连接到数据库。
Q1 - 如何仅为测试用例更改属性文件的值。
Q2 - 是否必须提供 \src\main\resources\application.properties 为 \src\test\resources\application.properties 的所有键?
我是测试用例的新手,所以欢迎很少解释的答案。
更新:- 我发现了
@SpringBootTest
@TestPropertySource(properties = {"spring.property.name=vishal", " spring.property.status=true"})
class ControllerTest {
将通过提供键值和值来暂时解决问题,但是我有很多键,无法以这种方式提供。
【问题讨论】:
标签: java unit-testing junit junit5