如何从Maven POM为TestNg套件文件设置参数变量

时间:2017-03-10 09:13:46

标签: maven testng maven-surefire-plugin

我有多个TestSuites文件。

我想从POM文件中设置我的套件文件中的参数变量。但我无法从谷歌搜索中获得任何建议。

任何人都可以帮助我如何执行它。

例如。

ABC.xml [文件#1]

<parameter name="property_file" value="C:/a.properties" />

DEF.xml [文件#2]

<parameter name="property_file" value="C:/a.properties" />

我想从Maven pom设置Property_file参数值。

我想设置&#34; C:/123.properties"对于文件#1和&#34; C:/456.properties"对于文件#2。

我的套件文件可能看起来像_

<suiteXmlFiles>
    <suiteXmlFile>ABC.xml</suiteXmlFile>
    <suiteXmlFile>DEF.xml</suiteXmlFile>
</suiteXmlFiles>

我不想在TestNG文件中设置参数,我想从POM文件中进行设置。

有可能吗?

2 个答案:

答案 0 :(得分:1)

是的,有可能。您可以使用maven ressources插件进行过滤。看一看: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

如果文章没有回答您的所有问题,请不要犹豫。

总之,您可以这样做:

<project>
   ...
   <properties>
      <suiteXmlFile>ABC.xml</suiteXmlFile>
   </properties>
   ...
   <build>
   ...
      <resources>
         <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
         </resource>
         ...
      </resources>
      ...
   </build>
   ...
</project>

并在您使用的资源文件夹中的xml文件中

<parameter name="property_file" value="${suiteXmlFile}" />

不可能(至少以一种简单的方式)是实现一个maven魔法,它在每个xml文件中以不同的方式解释相同的属性。在这种情况下,您必须使用不同命名的属性。 (例如,suiteXmlFile1,suiteXmlFile2)

答案 1 :(得分:0)

@ niklas-p的答案很好但是在测试资源的情况下,你应该使用testResources代替。

<project>
   ...
   <properties>
      <property_file>C:/a.properties</property_file>
   </properties>
   ...
   <build>
   ...
      <testResources>
         <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
         ...
      </testResources>
      ...
   </build>
   ...
</project>

然后,过滤后的资源将位于${project.build.testOutputDirectory}目录中:

<suiteXmlFiles>
    <suiteXmlFile>${project.build.testOutputDirectory}/ABC.xml</suiteXmlFile>
    <suiteXmlFile>${project.build.testOutputDirectory}/DEF.xml</suiteXmlFile>
</suiteXmlFiles>

在套件文件中:

<parameter name="property_file" value="${property_file}" />