[ 
https://issues.apache.org/jira/browse/SUREFIRE-1398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tibor Digana updated SUREFIRE-1398:
-----------------------------------
    Fix Version/s: 2.22.3

> TestNG test fails when both JUnitCore provider and TestNG provider are on 
> classpath
> -----------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1398
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1398
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Maven Surefire Plugin, TestNG support
>    Affects Versions: 2.20
>            Reporter: Matous Jobanek
>            Assignee: Slawomir Jaranowski
>            Priority: Major
>             Fix For: 2.22.3, 3.0.0-M6
>
>
> When both JUnitCore and TestNG providers are on classpath:
> {code:xml}
>         <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>
> {code}
> then the TestNG execution fails with a message:
> {noformat}
> 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
> {noformat}
> 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()|https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java#L1289]
>  and the TestNG provider.
> The method is called for 
> [JunitCoreProvider|https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java#L2696]
>  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|https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java#L2745]
> In the description of the parameter 
> [threadCount|http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#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.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to