执行springboot测试而无需加载应用程序上下文,也无需在真实的测试环境中进行模拟 - 是可能的

时间:2017-09-20 18:37:00

标签: spring-boot-test

我有一个问题。请求你的帮助。 我们有一个spring boot应用程序,我编写了没有Mocks的集成测试,而是使用 TestRestTemplate @SpringbootTest

所以在本地机器上,当我执行测试时,它们执行正常,因为我在MyApplication.class内给出了@SpringbootTest 它将启动spring应用程序上下文并执行测试。

直到这里一切都很好。

但我们将此应用程序部署在不同的测试环境中,如qa,e2e,staging,然后再生产。 因此,我们必须执行Jenkins Job以针对上述环境进行集成测试,作为验收测试。

我的问题是:

  • 当我在jenkins上执行这些测试时,测试在Jenkins Slave机器上执行(在可用的执行程序中随机选取)并且它将达到终点(qa或e2e或分段或生产终点)和发送休息请求并获得响应并进行验证。 但测试启动了jenkins slave上的应用程序上下文并在随机端口上加载,并且可以在jenkins slave机器上使用,直到测试结束,尽管我根本没有与应用程序上下文交互(因为我正在进行外部测试结束)点)。 当我尝试针对真实测试服务器运行测试并在本地测试时加载应用程序上下文时,是否有任何选项不加载spring应用程序上下文?

请帮助..我对春季靴子有点新意并且被困在这里。

非常感谢您提前

1 个答案:

答案 0 :(得分:0)

如果要使用TestRestTemplateRestTemplate并希望由Spring配置它,答案是否定的。您甚至必须将webEnvironment中的SpringBootTest设置为RANDOM_PORTDEFINED_PORT,否则上下文将没有TestRestTemplate

如果您愿意手工配置它,那么您将不需要SpringBootTest注释,也就不会有任何Spring上下文。

TestRestTemplate非常适合作为SpringBootTest的一部分在localhost上调用当前应用程序。集成测试还有其他选择,例如RestAssured,这些不需要Spring来执行。