如何在JavaMaven项目中定义环境变量?
我正在开发一个用于测试UI和API的混合框架 我希望在QA和UAT环境中执行相同的测试。我有用于qa和uat的.properties文件。以及将执行测试的testng.xml文件。 我有特定于环境的UI和API测试 我想定义一个通用环境变量,当在maven执行(mvn测试)期间传递该变量时,.properties文件读取器将在执行UI或API测试之前读取该变量-如何/在何处定义此环境变量?如何在JavaMaven项目中定义环境变量?,maven,environment-variables,pom.xml,testng.xml,Maven,Environment Variables,Pom.xml,Testng.xml,我正在开发一个用于测试UI和API的混合框架 我希望在QA和UAT环境中执行相同的测试。我有用于qa和uat的.properties文件。以及将执行测试的testng.xml文件。 我有特定于环境的UI和API测试 我想定义一个通用环境变量,当在maven执行(mvn测试)期间传递该变量时,.properties文件读取器将在执行UI或API测试之前读取该变量-如何/在何处定义此环境变量? <configuration> <
<configuration>
<environmentVariables>
<environemnt>${environemnt}</environemnt>
<browser>${browser}</browser>
</environmentVariables>
</configuration>
${Environment}
${browser}
当在pom.xml文件中的maven surefire plugin下添加上述配置时,可以在所需的环境和浏览器中执行所需的testng.xml文件。
e、 g
mvn test-Denvironment=qa-Dbrowser=firefox-DsuiteXmlFile=testng_ui.xml
通常,在创建框架时(假设从头开始;不推荐,因为有许多框架可以直接选择,然后根据需要进行定制),您应该负责读取属性文件。现在从等式中删除此细节,您可以将的“通用环境变量”直接放入
pom
文件中。以下是一个解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<systemProperties>
<property>
<name>myUniversalProperty</name>
<value>Same in all envs</value>
</property>
</systemProperties>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
${maven surefire plugin.version}
我的宇宙属性
所有环境中都相同
现在,这将允许您使用
System.getProperty(“myUniversalProperty”)
表达式读取值。请注意,在本例中,
也可以在运行应用程序时作为命令行参数传递。不推荐使用,因为有许多框架可以直接选择,然后根据需要进行定制-->您指的是哪些框架?事实上,我正在从头开始开发一个框架,可以用于ui、api测试,也可以用于通过testNG和Cucumber执行,这不取决于需求吗<例如,如果确实需要,code>Spring可以直接读取属性文件以及pom
中定义的属性,或者可以通过命令提示符直接传递属性值,从而完全消除在pom
中进行此类配置的需要。重点是,你只需要做一些研究,你可以通过不重新发明整个轮子来帮助自己。