Java 测试单个包会跳过TestNG中的参数化测试 总体描述

Java 测试单个包会跳过TestNG中的参数化测试 总体描述,java,maven,parameters,testng,maven-surefire-plugin,Java,Maven,Parameters,Testng,Maven Surefire Plugin,我有一个带有参数化TestNG测试的简单Maven项目。参数是通过套件XML文件指定的。当我为整个项目运行测试时,将读取套件XML文件,使用参数并执行参数化测试。但是,当我尝试仅测试单个包时,显然没有使用套件XML文件,并且跳过了测试,并抱怨说@test on method…需要“Parameter”…,但没有标记为@Optional或defined”。问题是如何使用参数运行单个测试和测试包 有关更多详细信息,请参见下文 测试整个项目 这正如预期的那样有效。执行两种测试方法。一个测试方法是无参数

我有一个带有参数化TestNG测试的简单Maven项目。参数是通过套件XML文件指定的。当我为整个项目运行测试时,将读取套件XML文件,使用参数并执行参数化测试。但是,当我尝试仅测试单个包时,显然没有使用套件XML文件,并且跳过了测试,并抱怨说@test on method…需要“Parameter”…,但没有标记为@Optional或defined”。问题是如何使用参数运行单个测试和测试包

有关更多详细信息,请参见下文

测试整个项目 这正如预期的那样有效。执行两种测试方法。一个测试方法是无参数的,另一个是参数化的,参数值取自套件XML文件。这相当于NetBeans中的Run\Test项目

C:\Users\Andrew\Documents\NetBeansProjects\TestNGDemo>"c:\Program Files\NetBeans 8.2\java\maven\bin\mvn" test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building TestNGDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ TestNGDemo ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ TestNGDemo ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ TestNGDemo ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\Andrew\Documents\NetBeansProjects\TestNGDemo\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ TestNGDemo ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ TestNGDemo ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
testGetChangedString
getTrue
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.844 s - in TestSuite
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.702s
[INFO] Finished at: Wed Jun 06 23:42:20 ACST 2018
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
C:\Users\Andrew\Documents\NetBeansProjects\TestNGDemo>
测试单个包 在这种情况下,只运行一个测试方法,即无参数测试方法。跳过参数化测试方法。这相当于右键单击NetBeans中的包并选择“测试包”

项目来源
压缩后的项目源代码可以从(非常小)下载。

您需要单独的XML文件来完成单独的包。当以包作为参数运行TestNG时,TestNG不会自动知道XML文件,就像它不存在一样。
因此,您有多个选项,可以在属性文件中指定参数,也可以对它们进行硬编码,或者为每个包创建单独的XML文件,然后将其作为参数传递。

谢谢您的回答。您能否详细说明如何为包指定XML文件?例如,我想做的是从NetBeans IDE运行一个测试文件或一个包的单个测试,并为此特定运行指定一个XML文件。如果我理解正确,您只想在本地计算机上运行单独的包进行测试。因此,最简单的方法是创建包含以下内容的新XML文件:
现在,不要使用全局XML文件,而是运行此XML文件,您可以编辑该文件以运行具有不同参数的不同包。
C:\Users\Andrew\Documents\NetBeansProjects\TestNGDemo>"c:\Program Files\NetBeans 8.2\java\maven\bin\mvn" test -Dtest=com.endersoft.testngdemo.**.*
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building TestNGDemo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ TestNGDemo ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ TestNGDemo ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ TestNGDemo ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\Andrew\Documents\NetBeansProjects\TestNGDemo\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ TestNGDemo ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ TestNGDemo ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.endersoft.testngdemo.SimpleClassNGTest
getTrue
[WARNING] Tests run: 2, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 2.422 s - in com.endersoft.testngdemo.SimpleClassNGTest
[INFO]
[INFO] Results:
[INFO]
[WARNING] Tests run: 2, Failures: 0, Errors: 0, Skipped: 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.268s
[INFO] Finished at: Wed Jun 06 23:47:28 ACST 2018
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------