Недавно я нашел решение, которое позволяет мне загружать системные свойства для моих модульных тестов.Это прекрасно работает, если я запускаю тест по отдельности, но если я решу запустить весь набор тестов, это не удастся.Может кто-нибудь сказать мне, почему?
Первый шаг - загрузить контекст тестового приложения:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext-test.xml")
Следующий шаг - создать класс, который будет загружать системные свойства:
import java.io.InputStream;
import java.util.Properties;
import javax.annotation.PostConstruct;
import org.springframework.core.io.Resource;
public class SystemPropertiesLoader{
private Resource resource;
public void setResource(final Resource resource){
this.resource = resource;
}
@PostConstruct
public void applyProperties() throws Exception{
final Properties systemProperties = System.getProperties();
final InputStream inputStream = resource.getInputStream();
try{
systemProperties.load(inputStream);
} finally{
inputStream.close();
}
}
}
Последний шаг - перечислить это как bean-компонент в контексте моего тестового приложения:
<bean class="com.foo.SystemPropertiesLoader">
<property name="resource" value="classpath:localdevelopment_Company.properties" />
</bean>
Когда я запускаю набор тестов, некоторые из моих тестов зависят от системных свойств, потерпеть поражение.Если я пойду к конкретному тесту и запусту его, он пройдет.Я отладил его и убедился, что код в SystemPropertiesLoader выполняется, а все остальные компоненты успешно извлекаются из контекста.Однако свойства загружаются некорректно, так как все они становятся нулевыми, когда я пытаюсь получить к ним доступ.Есть предложения?