Java 在集成测试中启动两个spring启动应用程序
我有一个spring boot集成测试。目前,它通过位于src/test/resources中的我的测试服务器应用程序(MockServerApp.java)在测试上运行 我还想在集成测试启动之前启动我的spring boot应用程序(app.java),这样它就可以连接并执行我将添加到集成测试中的soap调用,而不是手动运行主应用程序服务器然后启动集成测试 我的MockServerApp已配置为端口9119。 我的应用程序(主应用程序)配置为端口28433。 它们都在本地主机上运行 起初,我尝试使用SpringBootTest同时运行这两个应用程序Java 在集成测试中启动两个spring启动应用程序,java,spring-boot,junit,server,port,Java,Spring Boot,Junit,Server,Port,我有一个spring boot集成测试。目前,它通过位于src/test/resources中的我的测试服务器应用程序(MockServerApp.java)在测试上运行 我还想在集成测试启动之前启动我的spring boot应用程序(app.java),这样它就可以连接并执行我将添加到集成测试中的soap调用,而不是手动运行主应用程序服务器然后启动集成测试 我的MockServerApp已配置为端口9119。 我的应用程序(主应用程序)配置为端口28433。 它们都在本地主机上运行 起初,我尝
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,classes = {App.class,MockServerApp.class
})
public class BillingMediatorIT {
@Test
public void testOne(){
}
}
但这只会在端口9119上启动模拟服务器
然后我尝试在像这样的集成测试之前启动它
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,classes = {App.class,MockServerApp.class
})
public class BillingMediatorIT {
static ConfigurableApplicationContext context;
@BeforeClass
static public void setup(){
SpringApplication springApplication = new SpringApplicationBuilder()
.sources(App.class)
.build();
context = springApplication.run();
}
@Test
public void testOne(){
}
}
这给了我一个错误,虽然说该地址已在使用中
我的测试属性
server.ssl.enabled=false
logging.config=classpath:logback-spring.xml
logging.file=messages
logging.file.max-size=50MB
logging.level.com.nulogix=DEBUG
billing.engine.address=127.0.0.1
billing.engine.port=9119
billing.engine.api.version=0.97
billing.engine.core.version=0.97
billing.engine.core.name=Patient_Responsibility
server.port=28433
server.ssl.enabled=true
server.ssl.key-store=/Users/asluborski/Documents/mock.jks
server.ssl.key-store-password=Nul0gix
logging.config=classpath:logback-spring.xml
logging.file=messages
logging.file.max-size=50MB
logging.level.com.nulogix=DEBUG
billing.engine.address=127.0.0.1
billing.engine.port=9119
billing.engine.api.version=0.97
billing.engine.core.version=0.97
billing.engine.core.name=Patient_Responsibility
我的app.properties
server.ssl.enabled=false
logging.config=classpath:logback-spring.xml
logging.file=messages
logging.file.max-size=50MB
logging.level.com.nulogix=DEBUG
billing.engine.address=127.0.0.1
billing.engine.port=9119
billing.engine.api.version=0.97
billing.engine.core.version=0.97
billing.engine.core.name=Patient_Responsibility
server.port=28433
server.ssl.enabled=true
server.ssl.key-store=/Users/asluborski/Documents/mock.jks
server.ssl.key-store-password=Nul0gix
logging.config=classpath:logback-spring.xml
logging.file=messages
logging.file.max-size=50MB
logging.level.com.nulogix=DEBUG
billing.engine.address=127.0.0.1
billing.engine.port=9119
billing.engine.api.version=0.97
billing.engine.core.version=0.97
billing.engine.core.name=Patient_Responsibility
因此,在对两个属性文件中的server.port进行了修改之后,我意识到集成测试仍在使用MockServerApp运行,尽管我的spring引导测试指向主应用程序类。我尝试过使用属性源,但不起作用
我应该补充的是,我在src/test/resources和src/main/resources中的属性都命名为application.properties。我不确定这是否会导致冲突,但我只是从main复制了属性,然后在文件中更改了server.port。我不知道如何更改.properties的名称 根据您的情况,以下两条建议可能会有所帮助:
谢谢,这些都是很好的建议,但我还是坚持把它变成一个多模块的项目