Open artem-val81 opened 2 days ago
Вы можете использовать @TestPropertySource для переопределения значений в application.properties. Из его JavaDoc: тестовые источники свойств могут использоваться для выборочного переопределения свойств, определенных в системных и приложения источниках свойств. Например:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ExampleApplication.class)
@TestPropertySource(locations="classpath:test.properties")
public class ExampleApplicationTests {
}
Верно. К сожалению, это не работает при использовании на ExampleApplication.class, поэтому я должен устанавливать его на каждом тестовом классе. Так ли это?
Это должно быть где-то в иерархии тестового класса, то есть вы можете использовать общий суперкласс для настройки этого параметра в нескольких различных тестовых классах.
Также обратите внимание, что @TestPropertySource может принимать аргумент properties для переопределения некоторых свойств прямо в коде, например @TestPropertySource(properties = "myConf.myProp=valueInTest"), это полезно в случае, если вы не хотите создавать полностью новый файл свойств.
У меня есть приложение Spring-Boot, где настройки по умолчанию установлены в файле application.properties в classpath (src/main/resources/application.properties).
Я хотел бы переопределить некоторые настройки по умолчанию в моем JUnit тесте с помощью свойств, объявленных в файле test.properties (src/test/resources/test.properties).
Сначала я думал, что использование @PropertySource("classpath:test.properties") в классе TestConfig решит проблему, но эти свойства не перезаписывают настройки application.properties (см. Spring-Boot Reference Doc - 23. Externalized Configuration). Затем я попробовал использовать -Dspring.config.location=classpath:test.properties при вызове теста. Это сработало - но я не хочу устанавливать это системное свойство для каждого выполнения теста. Должно быть простое решение, как переопределить настройки application.properties в JUnit тестах с помощью test.properties, которое я, должно быть, упустил.