У меня есть следующий тест:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@TestPropertySource(value = "classpath:testApplication.properties")
public class ESJavaAPITests {
@Resource
private Environment environment;
private final String CLUSTER_NAME = environment.getProperty("ES.cluster.name");
}
Недвижимость находится в test/java/resources/testApplication.properties
и выглядит так:
ES.host = localhost
ES.port = 9300
ES.cluster.name = 2m3d
Однако я продолжаю получать NullPointerException
строку 25, которая в точности совпадает с строкой с инициализацией CLUSTER_NAME
:
Почему NPE?
Вы получаете NPE, потому что в момент инициализации вашего поля
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@TestPropertySource(value = "classpath:testApplication.properties")
public class ESJavaAPITests {
@Resource
private Environment environment;
private final String CLUSTER_NAME = environment.getProperty("ES.cluster.name");
}
среда test/java/resources/testApplication.properties
, потому что у Spring еще не было времени для автоматической привязки класса - ES.host = localhost
ES.port = 9300
ES.cluster.name = 2m3d
инициализируется при создании экземпляра тестового класса. Вместо этого вы должны использовать NullPointerException
: