Maven Surefire 插件没有选择参数
Maven Surefire plugin is not picking the parameters
Maven Surefire 插件未选取参数。当我 运行 日食中的回归套件 xml 时,它工作正常。但是当我 运行 作为 Maven test.For 时,相同的 xml 不起作用,因为它没有获取参数。我已经为此苦苦挣扎了一段时间。请帮忙。谢谢
RegressionSuite.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name= "RegressionTests">
<suite-files>
<!-- suite-file path="CreateUsers.xml"-->
<suite-file path="ReportFormatting.xml" />
<suite-file path="SectionsFormating.xml" />
<suite-file path="ColumnFormatting.xml" />
<suite-file path="AdvancedFunctions.xml" />
<suite-file path="AnalysisStyle.xml" />
<suite-file path="CalculatedFields.xml" />
<suite-file path="Aggregration.xml" />
<!-- suite-file path="Admin.xml"/-->
</suite-files>
</suite>
这是我的 POM
plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>8</source>
<target>8</target>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.8.0_91\bin\javac.exe</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<executions>
<execution>
<id>test</id>
<phase>integration-test</phase>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>
src\test\resources\RegressionTests.xml
</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这是错误信息
enParameter 'userName' is required by @Test on method Date_Aggregration but has not been marked @Optional or defined
at org.testng.internal.Parameters.createParams(Parameters.java:290)
at org.testng.internal.Parameters.createParametersForMethod(Parameters.java:359)
at org.testng.internal.Parameters.createParameters(Parameters.java:620)
at org.testng.internal.Parameters.handleParameters(Parameters.java:769)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:49)ter code here
这是我的 ReportFormatting.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression - Report Formatting" verbose="1" configfailurepolicy="continue">
<listeners>
<listener class-name="y.bi.extentReportListener.ExtentReportListener"/>
</listeners>
<parameter name="axisA" value="1" />
<parameter name="axisB" value="2" />
<parameter name="viewName" value="Ski Team"></parameter>
<!-- REPORT FIELDS -->
<!-- this is your report data set -->
<parameter name="rf1" value="Athlete Country" />
<parameter name="rf2" value="Agency Country" />
<parameter name="rf3" value="Invoiced Amount" />
<parameter name="rf4" value="Athlete Counter" />
<parameter name="rf5" value="Invoice Estimate" />
<!-- Data Section font type and size fields -->
<parameter name="fontType" value="Courier"></parameter>
<parameter name="fontSize" value="16"></parameter>
<!-- Column and Row Header font type and size -->
<parameter name="headerFontType" value="Helvetica"></parameter>
<parameter name="headerFontSize" value="18"></parameter>
<!-- Border Width -->
<parameter name="borderWidth" value="Thick"></parameter>
<!-- Title and Description -->
<parameter name="displayTitleFontType" value="Roboto"></parameter>
<parameter name="displayTitleFontSize" value="20"></parameter>
<parameter name="displayDescFontType" value="Geneva"></parameter>
<parameter name="displayDescFontSize" value="19"></parameter>
<!-- yellowfin login credentials -->
<parameter name="URL" value="http://10.10.5.77:8082/" />
<parameter name="userName" value="admin" />
<parameter name="passsword" value="test" />
>
<test name="ReportFormatting">
<classes>
<class name="y.bi.test.ReportFormatting">
<methods>
<include name="ValidateDataSection"></include>
<include name="ValidateColumnandRowHeadingsandBorder"></include>
<include name="ValidateTitleandDescription"></include>
<include name="ValidateHeaderFooterandTableSort"></include>
<!-- <include name=""></include> -->
</methods>
</class>
</classes>
</test>
</suite>
问题出在您的 pom 文件中。
您已将 surefire-plugin 绑定到 integration-test
阶段,并在 surefire-plugin
内将其配置为与套件 xml 文件一起使用。
但是默认情况下所有pom文件的super pom还有一个surefire-plugin
被定义为在test
阶段执行。 test
阶段在 integration-test
阶段之前。
所以 Maven 基本上会 运行 surefire-plugin
两次:一次用于 test
阶段,一次用于 integration-test
阶段。
现在由于 test
阶段绑定 surefire-plugin
正在执行而没有任何套件文件绑定到它,我猜它发现 @Test
方法,这些方法用 @Parameters
注释未传递值的注释(请记住,此处不涉及套件 xml 文件),导致错误。
要解决此问题,请更新 surefire-plugin
和
的相位值
- 变化:
<phase>integration-test</phase>
- To:
<phase>test</phase>
(或者您可以删除 <phase>
条目本身,这将导致 Maven 回退到默认值)
Maven Surefire 插件未选取参数。当我 运行 日食中的回归套件 xml 时,它工作正常。但是当我 运行 作为 Maven test.For 时,相同的 xml 不起作用,因为它没有获取参数。我已经为此苦苦挣扎了一段时间。请帮忙。谢谢
RegressionSuite.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name= "RegressionTests">
<suite-files>
<!-- suite-file path="CreateUsers.xml"-->
<suite-file path="ReportFormatting.xml" />
<suite-file path="SectionsFormating.xml" />
<suite-file path="ColumnFormatting.xml" />
<suite-file path="AdvancedFunctions.xml" />
<suite-file path="AnalysisStyle.xml" />
<suite-file path="CalculatedFields.xml" />
<suite-file path="Aggregration.xml" />
<!-- suite-file path="Admin.xml"/-->
</suite-files>
</suite>
这是我的 POM
plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>8</source>
<target>8</target>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.8.0_91\bin\javac.exe</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<executions>
<execution>
<id>test</id>
<phase>integration-test</phase>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>
src\test\resources\RegressionTests.xml
</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这是错误信息
enParameter 'userName' is required by @Test on method Date_Aggregration but has not been marked @Optional or defined
at org.testng.internal.Parameters.createParams(Parameters.java:290)
at org.testng.internal.Parameters.createParametersForMethod(Parameters.java:359)
at org.testng.internal.Parameters.createParameters(Parameters.java:620)
at org.testng.internal.Parameters.handleParameters(Parameters.java:769)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:49)ter code here
这是我的 ReportFormatting.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression - Report Formatting" verbose="1" configfailurepolicy="continue">
<listeners>
<listener class-name="y.bi.extentReportListener.ExtentReportListener"/>
</listeners>
<parameter name="axisA" value="1" />
<parameter name="axisB" value="2" />
<parameter name="viewName" value="Ski Team"></parameter>
<!-- REPORT FIELDS -->
<!-- this is your report data set -->
<parameter name="rf1" value="Athlete Country" />
<parameter name="rf2" value="Agency Country" />
<parameter name="rf3" value="Invoiced Amount" />
<parameter name="rf4" value="Athlete Counter" />
<parameter name="rf5" value="Invoice Estimate" />
<!-- Data Section font type and size fields -->
<parameter name="fontType" value="Courier"></parameter>
<parameter name="fontSize" value="16"></parameter>
<!-- Column and Row Header font type and size -->
<parameter name="headerFontType" value="Helvetica"></parameter>
<parameter name="headerFontSize" value="18"></parameter>
<!-- Border Width -->
<parameter name="borderWidth" value="Thick"></parameter>
<!-- Title and Description -->
<parameter name="displayTitleFontType" value="Roboto"></parameter>
<parameter name="displayTitleFontSize" value="20"></parameter>
<parameter name="displayDescFontType" value="Geneva"></parameter>
<parameter name="displayDescFontSize" value="19"></parameter>
<!-- yellowfin login credentials -->
<parameter name="URL" value="http://10.10.5.77:8082/" />
<parameter name="userName" value="admin" />
<parameter name="passsword" value="test" />
>
<test name="ReportFormatting">
<classes>
<class name="y.bi.test.ReportFormatting">
<methods>
<include name="ValidateDataSection"></include>
<include name="ValidateColumnandRowHeadingsandBorder"></include>
<include name="ValidateTitleandDescription"></include>
<include name="ValidateHeaderFooterandTableSort"></include>
<!-- <include name=""></include> -->
</methods>
</class>
</classes>
</test>
</suite>
问题出在您的 pom 文件中。
您已将 surefire-plugin 绑定到 integration-test
阶段,并在 surefire-plugin
内将其配置为与套件 xml 文件一起使用。
但是默认情况下所有pom文件的super pom还有一个surefire-plugin
被定义为在test
阶段执行。 test
阶段在 integration-test
阶段之前。
所以 Maven 基本上会 运行 surefire-plugin
两次:一次用于 test
阶段,一次用于 integration-test
阶段。
现在由于 test
阶段绑定 surefire-plugin
正在执行而没有任何套件文件绑定到它,我猜它发现 @Test
方法,这些方法用 @Parameters
注释未传递值的注释(请记住,此处不涉及套件 xml 文件),导致错误。
要解决此问题,请更新 surefire-plugin
和
- 变化:
<phase>integration-test</phase>
- To:
<phase>test</phase>
(或者您可以删除<phase>
条目本身,这将导致 Maven 回退到默认值)