Hi Everyone
I am facing some testng issues when I have upgraded my testng version to 7.8.0 (7.5 was stable for me)
Issue I am facing
Exception in thread "main" org.testng.TestNGException:
Method public java.lang.Object[] org.example.testngissue.nonWorkingCode.DataDrivenFactoryParent.factoryMethod(java.util.Map) requires a '@dataProvider' named : mapDataProvider in class org.example.testngissue.nonWorkingCode.InputDataProvider
Refrence repo
https://github.com/ShubhamAgarwalGit/testNgIssue.git
Issue Explanation
Scenario-1
Even though I have a expected 'factoryMethod' annotated with @dataProvider and name = "mapDataProvider" in expected class "org.example.testngissue.nonWorkingCode.InputDataProvider" testng is not able to find it . Please refer directory "org.example.testngissue.nonWorkingCode" in order to reproduce issue
Scenario-2
However when we move same '@dataProvider' annotated method into the class containing 'factoryMethod' my code is working .
Hence for more clarity I have added the working code under package "org.example.testngissue.workingCode" for your reference.
My Expectation
testNg should work in Scenario-1 like Scenario-2
Scenario-1 logs (issue)
18:52:48.231 [main] INFO org.example.testngissue.nonWorkingCode.NonWorkingCodeMainClass -- --- Generated TestNG XML ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="FactorySuite">
<test thread-count="5" name="FactoryTest">
<classes>
<class name="org.example.testngissue.nonWorkingCode.DataDrivenFactoryChild"/>
</classes>
</test> <!-- FactoryTest -->
</suite> <!-- FactorySuite -->
Exception in thread "main" org.testng.TestNGException:
Method public java.lang.Object[] org.example.testngissue.nonWorkingCode.DataDrivenFactoryParent.factoryMethod(java.util.Map) requires a @DataProvider named : mapDataProvider in class org.example.testngissue.nonWorkingCode.InputDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:526)
at org.testng.internal.Parameters.handleParameters(Parameters.java:763)
at org.testng.internal.FactoryMethod.invoke(FactoryMethod.java:160)
at org.testng.internal.TestNGClassFinder.processFactory(TestNGClassFinder.java:174)
at org.testng.internal.TestNGClassFinder.processMethod(TestNGClassFinder.java:138)
at org.testng.internal.TestNGClassFinder.processClass(TestNGClassFinder.java:129)
at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:67)
at org.testng.TestRunner.initMethods(TestRunner.java:461)
at org.testng.TestRunner.init(TestRunner.java:356)
at org.testng.TestRunner.init(TestRunner.java:309)
at org.testng.TestRunner.<init>(TestRunner.java:184)
at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:652)
at org.testng.SuiteRunner.init(SuiteRunner.java:224)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:116)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1375)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1349)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1191)
at org.testng.TestNG.runSuites(TestNG.java:1114)
at org.testng.TestNG.run(TestNG.java:1082)
at org.example.testngissue.nonWorkingCode.NonWorkingCodeMainClass.main(NonWorkingCodeMainClass.java:35)
Scenario-2 logs (working code logs)
19:06:01.577 [main] INFO org.example.testngissue.workingCode.WorkingCodeMainClass -- --- Generated TestNG XML ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="FactorySuite">
<test thread-count="5" name="FactoryTest">
<classes>
<class name="org.example.testngissue.workingCode.DataDrivenFactoryChild"/>
</classes>
</test> <!-- FactoryTest -->
</suite> <!-- FactorySuite -->
19:06:01.669 [main] INFO org.example.testngissue.workingCode.DataDrivenFactoryParent -- DataDrivenFactoryParent.mapDataProvider called
19:06:01.672 [main] INFO org.example.testngissue.workingCode.DataDrivenFactoryParent -- Inside factory: creating test instance for params: {password=pass1, email=user1@example.com}
19:06:01.688 [main] INFO org.example.testngissue.workingCode.DataDrivenFactoryParent -- Inside factory: creating test instance for params: {password=pass2, email=user2@example.com}
19:06:01.752 [main] INFO org.testng.internal.Utils -- [TestNG] Running:
Command line suite
19:06:01.781 [main] INFO org.example.testngissue.workingCode.CoreTestCaseClass -- FactoryMapTestCase: testWithMap called with params: {password=pass1, email=user1@example.com}
19:06:01.781 [main] INFO org.example.testngissue.workingCode.CoreTestCaseClass -- FactoryMapTestCase: email=user1@example.com, password=pass1
19:06:01.783 [main] INFO org.example.testngissue.workingCode.CoreTestCaseClass -- FactoryMapTestCase: testWithMap called with params: {password=pass2, email=user2@example.com}
19:06:01.783 [main] INFO org.example.testngissue.workingCode.CoreTestCaseClass -- FactoryMapTestCase: email=user2@example.com, password=pass2
===============================================
FactorySuite
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0
Hi Everyone
I am facing some testng issues when I have upgraded my testng version to 7.8.0 (7.5 was stable for me)
Issue I am facing
Exception in thread "main" org.testng.TestNGException:
Method public java.lang.Object[] org.example.testngissue.nonWorkingCode.DataDrivenFactoryParent.factoryMethod(java.util.Map) requires a '@dataProvider' named : mapDataProvider in class org.example.testngissue.nonWorkingCode.InputDataProvider
Refrence repo
https://github.com/ShubhamAgarwalGit/testNgIssue.git
Issue Explanation
Scenario-1
Even though I have a expected 'factoryMethod' annotated with @dataProvider and name = "mapDataProvider" in expected class "org.example.testngissue.nonWorkingCode.InputDataProvider" testng is not able to find it . Please refer directory "org.example.testngissue.nonWorkingCode" in order to reproduce issue
Scenario-2
However when we move same '@dataProvider' annotated method into the class containing 'factoryMethod' my code is working .
Hence for more clarity I have added the working code under package "org.example.testngissue.workingCode" for your reference.
My Expectation
testNg should work in Scenario-1 like Scenario-2
Scenario-1 logs (issue)
Scenario-2 logs (working code logs)