Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.20
-
None
Description
When both JUnitCore and TestNG providers are on classpath:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>2.20</version> </dependency> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-testng</artifactId> <version>2.20</version> </dependency> </dependencies> </plugin>
then the TestNG execution fails with a message:
Configuring TestNG with: TestNG60Configurator Cannot use a threadCount parameter less than 1; 1 > 0 Usage: <main class> [options] The XML suite files to run Options: -configfailurepolicy Configuration failure policy (skip or continue) -d Output directory -dataproviderthreadcount Number of threads to use when running data providers -excludegroups Comma-separated list of group names to exclude -groups Comma-separated list of group names to be run -junit JUnit mode Default: false -listener List of .class files or list of class names implementing ITestListener or ISuiteListener -methods Comma separated of test methods Default: [] -methodselectors List of .class files or list of class names implementing IMethodSelector -mixed Mixed mode - autodetect the type of current test and run it with appropriate runner Default: false -objectfactory List of .class files or list of class names implementing ITestRunnerFactory -parallel Parallel mode (methods, tests or classes) Possible Values: [tests, methods, classes, instances, none, true, false] -port The port -reporter Extended configuration for custom report listener -suitename Default name of test suite, if not specified in suite definition file or source code -suitethreadpoolsize Size of the thread pool to use to run suites Default: 1 -testclass The list of test classes -testjar A jar file containing the tests -testname Default name of test, if not specified in suitedefinition file or source code -testnames The list of test names to run -testrunfactory, -testRunFactory The factory used to create tests -threadcount Number of threads to use when running tests in parallel -usedefaultlisteners Whether to use the default listeners Default: true -log, -verbose Level of verbosity -xmlpathinjar The full path to the xml file inside the jar file (only valid if -testjar was specified) Default: testng.xml
The same behavior occurs when instead of these two providers I use my own dynamic provider and delegate the execution to the TestNG provider.
The cause of the behavior is a combination of the method convertJunitCoreParameters() and the TestNG provider.
The method is called for JunitCoreProvider and sets the thread count to the current value (no matter if it is set or not). In case that it is not set, then the value is 0, which causes the before mentioned failure when TestNGProvider is being executed.
The same in case of DynamicProvider
In the description of the parameter threadCount, there is written that it only makes sense to use in conjunction with the parallel parameter. So, I would propose to set the parameter only when the parameter parallel is set.