java - 在 JUnit 测试中将 Maven 属性传递给 Spring 应用程序上下文文件

标签 java spring maven junit

我正在尝试为一个项目进行 JUnit 测试,但我无法从注入(inject)到应用程序上下文 xml 文件的 pom 中获取属性。具体来说,我想注入(inject)定义应用程序运行环境的 env.code 变量。

就目前而言,pom 包含

<properties>
    <env.code>dev</env.code>
    ...
</properties>

当应用程序正常运行时,web.xml 文件获取 env.code 变量并将其重命名为“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>

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

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

    @Test
    public void testOne() {}

}

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

我怎样才能将 pom 中定义的 env.code 值注入(inject)到应用程序上下文文件中的 ${environment} 占位符中?

最佳答案

Configure Maven to do resource filtering在有问题的 XML 文件上。然后您可以使用 POM 中的属性。

关于java - 在 JUnit 测试中将 Maven 属性传递给 Spring 应用程序上下文文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957581/

相关文章:

java - Allure Cucumber JVM 适配器 - 报告显示没有功能没有故事

java - PreparedStatement性能调优

java - 在中央存储库中找不到 Maven ojbc 6 jar

java - Spring Maven hibernate 类未找到异常

java - neo4j 空间 wgs84 距离

java - 让Spring使用Jackson在GET端点中转换JSON编码的@RequestParam

java - hibernate 。配置。不启动 jar 文件

XSLT Document 函数在 Maven POM 上返回空结果

mysql - liquibase SSL 对等点错误关闭

java - 使用 Spring AOP 创建拦截器