У меня есть файл тестовых свойств под src/test/resources/application.yml
. Но я не могу получить значения для загрузки в модульном тесте. У меня следующий класс:
@ConfigurationProperties("snmp")
open class SnmpProperties {
var port: Int = 1611
lateinit var protocol: String
lateinit var host: String
override fun toString(): String {
return "SnmpProperties(port=$port, protocol='$protocol', host='$host')"
}
}
который в производственном коде загружает значения из /src/main/resources/application.yml
.
snmp:
port: 1161
protocol: udp
host: 0.0.0.0
Класс модульного теста:
@CamelSpringBootTest
@SpringBootApplication
@EnableAutoConfiguration
open class SnmpRouteTest : CamelTestSupport() {
@Autowired
lateinit var snmpProperties: SnmpProperties
@Mock
lateinit var repository: IPduEventRepository
@InjectMocks
lateinit var snmpTrapRoute: SnmpTrapRoute
@Before
fun setup() {
initMocks(this)
}
Я попытался добавить профиль test
к каждому application.yml
файлам, чтобы увидеть, работает ли это добавление @ActiveProfiles("test")
, но этого не произошло.
src / main / resources / application.yml и src / test / resources / application.yml
# Test profile
spring:
profiles: test
snmp:
port: 1161
protocol: udp
host: 0.0.0.0
Я также создал класс TestConfiguration, который создает bean-компонент SnmpProperties
и автоматически подключает его к классу тестирования с помощью @EnableConfigurationProperties(TestConfiguration::class)
:
@Configuration
@EnableConfigurationProperties(SnmpProperties::class)
open class TestConfiguration {
@Bean
open fun snmpProperties() = SnmpProperties()
}
Опять же, нет. Я получаю следующее сообщение об ошибке:
Cannot instantiate @InjectMocks field named 'snmpTrapRoute' of type 'class org.meanwhile.in.hell.camel.snmp.receiver.route.SnmpRoute'.
You haven't provided the instance at field declaration so I tried to construct the instance.
However the constructor or the initialization block threw an exception : Parameter specified as non-null is null: method org.meanwhile.in.hell.camel.snmp.receiver.route.SnmpTrapRoute.<init>, parameter snmpProperties