如何从 jUnit 测试启动 maven 过滤?

dim*_*902 5 java junit maven-2 intellij-idea

情况:我有一个类 MyController 与一些外部 WebServices 一起工作。

public class MyController {
    private String integrationWebServiceURL;
}
Run Code Online (Sandbox Code Playgroud)

此类 Web 服务 URL 在描述符(applicationContext.xml)中的配置控制器 bean 期间传递

<bean id="myController"  class="com.mypath.MyController">
    <property name="integrationWebServiceURL" value="${integration.web.service.url}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

该值是动态的,实际值存储在属性文件application.properties 中

integration.web.service.url=${pom.integration.web.service.url}
Run Code Online (Sandbox Code Playgroud)

但这不是结束 - 真正的值存储在 Maven 项目文件(pom.xml)中,过滤 = true。

<pom.integration.web.service.url>http://mywebservices.com</pom.integration.web.service.url>
Run Code Online (Sandbox Code Playgroud)

因此,当我们使用mvn install 时,将 pom.xml 中的测试值复制到 application.properties 中的适当占位符,然后对我的类进行测试就可以了。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"})
public class MyControllerTest {

}
Run Code Online (Sandbox Code Playgroud)

问题:我需要从 IDE 启动我的测试才能使用不同的设置并使用 IDE 的调试功能。但是,如果我在没有初步 Maven 构建的情况下简单地从 IDE 启动此测试 - 比我的 Web 服务地址将简单地从 application.properties 获取并等于“${pom.integration.web.service.url}”(例如,Maven 过滤过程不会测试前不工作)。如何调整 Maven、Spring 或 jUnit 以从 pom.xml 中提取我的值?

注意:我知道我可以简单地在测试类使用的 application.properties 或 applicationContext.xml 文件中明确设置这个值,但我需要从 pom.xml 中提取这个值。

Joo*_*gen 0

只需使用 Maven 运行即可,如下所示:

mvn test
Run Code Online (Sandbox Code Playgroud)

然后一切都应该与 pom 变量的过滤一起进行。您可以拥有特定属性文件的 testResources。或者 applicationContext-test.xml。