У меня есть приложение весенней загрузки. Я хочу написать некоторый модульный тест для методов в классе обслуживания.
Я могу загрузить переменную окружения и получить свойства в классе модульного тестирования, но не могу сделать это в классе обслуживания. Среда в классе обслуживания всегда равна нулю при достижении этого из модульных тестов. Это работает при достижении его из приложения.
SomethingServiceTest.java
@RunWith(SpringRunner.class)
@DataJpaTest
@TestPropertySource(value = "/application.properties")
public class SomethingServiceTest {
private ISomethingService m_SomethingService;
@PostConstruct
public void setup() {
m_SomethingService = new SomethingService();
m_SomethingService.setSomethingRepository(somethingRepository);
// somethingRepository is mocked class, probably not important
}
@Test
public void test_somethingMethod() {
System.out.println(env.getProperty("some.property"));
//env here is full and i get wanted property
m_uploadService.doSomething();
}
ISomethingService.java
public interface ISomethingService {
doSomething();
}
SomethingService.java
@Service
public class SomethingService implements ISomethingService {
@Value("${some.property}")
private String someProperty;
private ISomethingRepository somethingRepository;
@Autowired
public ISomethingRepository getSomethingRepository() {
return somethingRepository;
}
public void setSomethingRepository(ISomethingRepository p_somethingRepository) {
somethingRepository = p_somethingRepository;
}
@Autowired
private Environment env;
@Override
@Transactional
public String doSomething(){
System.out.println(env.getProperty("some.property"));
//env is null here
return someProperty;
}
}