有一个 @Value 注释常量,在运行测试时没有被初始化,当它在构造函数中需要它时抛出 NullPointerException。
要测试的样本类:
class TestClass {
@Value("${test.value1}")
private String value1;
private final TestTemplate testTemplate;
public TestClass(TestTemplateBuilder builder) {
testTemplate = builder.someMethod(value1).build();
}
---
}
样本测试类:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = TestClass.class)
@SpringBootTest
class TestClassTest {
@MockBean
TestTemplateBuilder builder;
@Autowired
TestClass testClass = new TestClass(testTemplate);
@Before
public void setUp() {
ReflectionTestUtils.setField(testClass, "value1", "VALUE");
Mockito.when(builder.build()).thenReturn(new TestTemplate());
}
---
}
事情尝试了,但没有任何效果:
- 我已经创建了
application.properties
具有所需值的文件。 - 创建
application-test.properties
并添加@TestPropertySource(locations="classpath:application-test.properties")
. @SpringBootTest(properties = { "test.value1=VALUE" })
我也尝试了一些其他的东西,但我得到的NullPoiterException
是someMethod(value1)
.
版本:
- 爪哇:1.8
- 春季启动:2.1.17
- 六月:4.12
- 模拟:2.23.4