在JUnit测试中将Maven属性传递给Spring Application上下文文件

And*_*w H 1 java junit spring maven

我试图让JUnit测试用于项目,但是我无法从pom中获取注入应用程序上下文xml文件的属性.具体来说,我想注入env.code变量,该变量定义运行应用程序的环境.

就目前而言,pom包含

<properties>
    <env.code>dev</env.code>
    ...
</properties>
Run Code Online (Sandbox Code Playgroud)

当应用程序正常运行时,web.xml文件将获取env.code变量并将其重命名为"environment"."environment"变量在引用的上下文配置xml文件中使用.

<context-param>
    <param-name>environment</param-name>
    <param-value>${env.code}</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:SpringBeans.xml classpath:SpringDataSource.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

我想在JUnit测试中复制此行为.到目前为止,我的简单测试用例看起来像

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/SpringBeans.xml", "/SpringDataSource.xml"})
public class MyTest {

    @Test
    public void testOne() {}

}
Run Code Online (Sandbox Code Playgroud)

由于我没有运行Web应用程序,因此绕过web.xml文件,因为解析应用程序上下文xml文件时出现问题,因此尝试运行测试时出错,因为$ {environment}未被替换.

如何将pom中定义的env.code值注入到应用程序上下文文件的$ {environment}占位符中?

Aar*_*lla 6

配置Maven对有问题的XML文件进行资源过滤.然后,您可以使用POM中的属性.