我尝试使用@TestPropertySource来覆盖我声明的变量之一。下面是我的测试代码:
@RunWith(SpringRunner.class)
@TestPropertySource(properties = {"calculator.enabled=true"})
public class CalculatorTest {
private Calculator calculator;
@Before
public void init() {
calculator = new Calculator();
}
@Test
public void isEnabled_Success_Test() {
Assert.assertFalse(calculator.isEnabled());
}
}
下面是要测试的类:
@Component
public class Calculator {
@Value("${calculator.enabled:true}")
private boolean isEnabled;
@Override
public boolean isEnabled() {
return isEnabled;
}
}
然而,我总是在不应该通过测试的时候通过测试,因为isEnabled字段被初始化为默认值false。
1条答案
按热度按时间eni9jsuy1#
正如M.代努姆已经说过的,您正在使用“new Calculator()”创建计算器;“。因此,它不是Spring管理的Bean。
您应该让spring创建计算器。预处理“spring-boot-starter-test”,例如:
此外,您当前使用的是JUnit 4,也许迁移到JUnit 5是一个好主意