Я пытаюсь запустить singleServiceTest (тип интеграционного тестирования) в моем приложении springboot с ActiveMQ. Есть два способа запустить это:
1) либо с помощью задачи gradle:
task singleServiceTests(type: Test, group: 'Test', dependsOn: ['startActiveMqInstances', 'startApp']) {
description 'Executes only single service tests.'
include '**/singleservicetest/**'
mustRunAfter integrationTests
systemProperty("broker.url", brokerUrl)
println("active spring profiles $activeSpringProfiles")
systemProperties['http.proxyHost'] = System.getProperty("http.proxyHost")
systemProperties['http.proxyPort'] = System.getProperty("http.proxyPort")
systemProperties['https.proxyHost'] = System.getProperty("https.proxyHost")
systemProperties['https.proxyPort'] = System.getProperty("https.proxyPort")
systemProperties['http.nonProxyHosts'] = System.getProperty("http.nonProxyHosts")
jvmArgs = ["-Xms96m", "-Xmx96m"]
}
, которая запускает и приложение, и встроенный borker (ActiveMQ), а затем выполняет все тесты.
2) Или запустить приложение отдельно в IntelliJ или командной строке, как при использовании
bootRun {
if (project.hasProperty('server.port')) {
systemProperty('server.port', project.property('server.port'))
} else {
systemProperty('server.port', project.ext.applicationPort)
}
systemProperty 'application.name', 'benefits-selection-rest'
jvmArgs = ["-Xms192m", "-Xmx192m"]
systemProperties['http.proxyHost'] = System.getProperty("http.proxyHost")
systemProperties['http.proxyPort'] = System.getProperty("http.proxyPort")
systemProperties['https.proxyHost'] = System.getProperty("https.proxyHost")
systemProperties['https.proxyPort'] = System.getProperty("https.proxyPort")
systemProperties['http.nonProxyHosts'] = System.getProperty("http.nonProxyHosts")
}
target, а затем запустить тест отдельно в IntelliJ.
Итак, я ' d запустите что-то вроде
gradlew bootRun -Dhttp.proxyHost=xxx -Dhttp.proxyPort=xxx -Dhttps.proxyHost=xxx -Dhttps.proxyPort=xxx -Dhttp.nonProxyHosts=127.0.0.1 -Dspring.profiles.active=sst -Dserver.port=8282
, чтобы запустить приложение, а затем запустите тест в IntelliJ с такими параметрами, как
-ea
-Dapplication.name=benefitsselection-rest
-Dhttp.proxyHost=xxx
-Dhttp.proxyPort=xxx
-Dhttps.proxyHost=xxx
-Dhttps.proxyPort=xxx
-Dhttp.nonProxyHosts=localhost|127.0.0.1
-Dserver.port=8282
-DsingleService.base.url=8282
-Dspring.profiles.active=sst,testap
Проблема в том, что когда я запускаю тест с помощью подхода 1) , и приложение, и тесты используют один и тот же встроенный брокер, и все работает нормально.
Однако, когда я использую подход 2), связь между приложением и тестом отсутствует. В журналах приложений ничего нет, и я не вижу никаких новых сообщений, отправляемых брокеру (так что я предполагаю, что это тест, который не может использовать брокера).
Моя изобретательность подошла к концу. как исследовать и решить эту проблему. Я попытался установить и переустановить ActiveMQ, настроив параметры и т. Д. c, но безуспешно.
Кто-нибудь испытывал нечто подобное или имел какие-либо предложения относительно того, что еще я могу попробовать решить эту проблему со связью?