【问题标题】:How do I set a system variable for use in a maven failsafe test?如何设置系统变量以用于 Maven 故障安全测试?
【发布时间】:2012-08-21 16:05:48
【问题描述】:

我正在尝试在没有设置我需要的环境变量的构建服务器上运行测试。

该变量在 spring 上下文 xml 文件中用于解析属性文件的位置。

例如类路径:config/${EnvironmentType}/myfile.properties

我正在使用故障安全插件并尝试各种记录在案的方法(甚至是已弃用的方法)来设置变量。没有任何区别,变量永远不会被解析。

我的配置如下:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.12</version>
            <executions>
                <execution>
                    <id>Integration tests against mocks</id>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                    <configuration>
                        <skipTests>${skip.integration.mock.tests}</skipTests>
                        <includes>
                            <include>**/*ITMock.java</include>
                        </includes>
                        <argLine>-DEnvironmentType="DevelopmentIntegration"</argLine>
                        <systemPropertyVariables>
                            <EnvironmentType>DevelopmentIntegration</EnvironmentType>
                        </systemPropertyVariables>
                        <environmentVariables>
                            <EnvironmentType>DevelopmentIntegration</EnvironmentType>
                        </environmentVariables>
                        <systemProperties>
                            <property>
                                <name>EnvironmentType</name>
                                <value>DevelopmentIntegration</value>
                            </property>
                        </systemProperties>
                        <forkMode>false</forkMode>
                    </configuration>
                </execution>
                <execution>
                    <id>Verify</id>
                    <goals>
                        <goal>verify</goal>
                    </goals>
                    <configuration>
                        <skipTests>false</skipTests>
                    </configuration>
                </execution>
            </executions>
        </plugin>

如何在不实际设置在机器上的情况下为我的测试设置这个 env var?

注意:使用 mvn verify -DEnvironmentType="DevelopmentIntegration" 运行它可以工作。我希望它只与 mvn verify 一起工作。

干杯, 彼得

【问题讨论】:

  • 您是否尝试将版本更新到 2.12.2,因为此版本与文档一致?此外,您是否通过 mvn -X ... 检查了输出...
  • PEBKAC... 上面的配置在父项目中,我没有注意到它被其中一个子项目覆盖。我坚持使用 2.12 作为我的版本。 2.12.2 中断,因为它没有创建故障安全报告目录。
  • 谢谢。我不得不进行大量搜索才能完成这项工作,而您的问题回答了我的问题。故障保护插件的文档太少了,互联网上这么多链接只是给出了一个找不到的页面。

标签: java maven maven-failsafe-plugin system-variable integration-testing


【解决方案1】:

显示的配置有 &lt;forkMode&gt; 的值 false,根据 docs,这似乎不是此参数的有效值。

我相信插件配置中指定的环境和系统变量适用于当前运行的JVM;如果插件创建了一个新的 JVM 来运行测试,它们就适用。我的猜测是 forkMode 参数中的 false 值导致不会发生分叉。尝试将其保留为默认值 (once),看看是否可行。

【讨论】:

  • 我会接受你的回应。分叉模式是错误的,但这不是问题。 (如果使用该配置,它实际上只会爆炸。)我正在覆盖子项目中的配置,因此我的设置被忽略了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2018-06-02
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2020-03-16
相关资源
最近更新 更多