【发布时间】:2022-11-05 15:08:19
【问题描述】:
我有一个组件测试,编写如下:
-
tomcat 以我们的 war 文件启动,如下所示: `
String pathToWebXML = new File("./main/webapp").getAbsolutePath(); SERVER_PORT = 8000; tomcat = new Tomcat(); tomcat.setPort(SERVER_PORT); webAppContext = tomcat.addWebapp(CONTEXT_PATH, pathToWebXML); tomcat.start();` 2)我们做出放心的电话并断言结果。
WebApp 是基于 Spring 的应用程序,并具有应用程序属性文件。现在我们要更改测试中的一些应用程序属性值,以涵盖所有可能的用例。
一般建议是使用:
System.setProperty(<name>,<value>)但这对我们不起作用,因为如果我们从测试中执行
setProperty,它会设置我们在步骤 1 中开始的测试而不是 Tomcat 的系统属性。我们如何影响 Tomcat 的属性?或者有没有其他方法可以改变运行在 Tomcat 中的代码的属性值,以便我们的测试可以检查所有可能的用例?
【问题讨论】:
-
我从未见过有人以这种方式对 Spring 应用程序进行集成测试。为什么不使用 spring 中的内置支持来编写集成测试?见docs.spring.io/spring-integration/reference/html/testing.html。
-
您可以阅读此示例并决定是否要继续您正在做的事情:mkyong.com/spring/spring-propertysources-example
标签: spring tomcat junit properties catalina