7.0.0-beta1
ããã«è¡šç€ºãããŠããããã«ããã©ãŠã¶ãŒåãããŒãžã§ã³ããã©ãããã©ãŒã ãå«ã5ã€ã®ããŒã¿ã»ãããæã€DataProviderãå«ãã¯ã©ã¹ããããŸãã
public class DataProviderManager {
@DataProvider(parallel = true)
public static Object[][] defaultWebDataProvider() {
return new Object[][] {
new Object[]{"chrome", "70", "Windows 10"},
new Object[]{"internet explorer", "11", "Windows 10"},
new Object[]{"safari", "12.0", "Mac 10.13"},
new Object[]{"chrome", "70", "Mac 10.13"},
new Object[]{"firefox", "63", "Mac 10.13"}
};
}
}
ç§ã®ãã¹ãã¯ã©ã¹ã§ã¯ãFactoryã䜿çšããŠããŒã¿ã次ã®ããã«æž¡ããŸãã
public class MSGWebExampleTest extends BaseTest {
// Declare page objects
private MSGHome msgHome;
// Declare test data
@Factory(dataProvider = StaticProps.DEFAULT_WEB_DATA_PROVIDER, dataProviderClass = DataProviderManager.class)
public MSGWebExampleTest(String browser, String browserVersion, String platform) {
super.setRunParams(browser, browserVersion, platform);
}
@BeforeMethod(alwaysRun = true)
public void setupTest() {
msgHome = new MSGHome();
}
@Features({GroupProps.WEB})
@Test(groups = {GroupProps.DEBUG})
@Parameters({ParamProps.WEB, ParamProps.MOBILE_WEB})
public void openSiteTest() {
new WebInteract(null,null).pause(1000).openUrl(URLBuilder.buildUrl());
}
}
tests.xmlïŒ
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Test Engineering Core Suite" parallel="methods" thread-count="2" data-provider-thread-count="4">
thread-count = 2ããã³data-provider-thread-count = 4ããã³parallel = trueãèšå®ããå Žåããã¹ãã¯8å䞊è¡ããŠå®è¡ãããã¯ãã§ãã
parallel = trueãç¡èŠããããã®ããã«èšå®ããããšããã¹ã¬ããã®æ°ã«é¢ä¿ãªãããã¹ãã¯é çªã«å®è¡ãããŸãã ã³ãã³ãã©ã€ã³ãã-Dthreadcount = 2 -Ddataproviderthreacount = 4ãæž¡ããsurefireãã©ã°ã€ã³ã®configã¿ã°ã«ãããã®å€ãèšå®ããããšã§ãäžèšã®testing.xmlã䜿çšããŠããã䞊è¡ããŠå®è¡ããããšäœåºŠãè©Šã¿ãŸããããäœãæ©èœããŠããŸããã
åé¡ã瀺ããŠãããã¹ãã±ãŒã¹ïŒã§ããã ãå°ããïŒãå ±æããŠãã ãã
@ VinceBarresi -TestNGããã¹ããé çªã«å®è¡ããŠãããšããªããã©ã®ããã«èšã£ãŠããã®ãããããããŸããã
ã¹ã¬ããIDãåºåããããã«ãã¹ãã¯ã©ã¹ãå€æŽããŸããã次ã®ããã«ãªããŸãã
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
public class MSGWebExampleTest {
private String browser, browserVersion, platform;
@Factory(dataProvider = "dp")
public MSGWebExampleTest(String browser, String browserVersion, String platform) {
this.browser = browser;
this.browserVersion = browserVersion;
this.platform = platform;
}
<strong i="8">@Test</strong>
public void openSiteTest() {
System.err.println("Running " + this + " on thread [" + Thread.currentThread().getId() + "]");
}
<strong i="9">@Override</strong>
public String toString() {
return String.format("[%s, %s, %s]", browser, browserVersion, platform);
}
@DataProvider(parallel = true, name = "dp")
public static Object[][] defaultWebDataProvider() {
return new Object[][]{
new Object[]{"chrome", "70", "Windows 10"},
new Object[]{"internet explorer", "11", "Windows 10"},
new Object[]{"safari", "12.0", "Mac 10.13"},
new Object[]{"chrome", "70", "Mac 10.13"},
new Object[]{"firefox", "63", "Mac 10.13"}
};
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Engineering Core Suite"
parallel="methods"
data-provider-thread-count="4"
thread-count="2"
verbose="2">
<test name="Test Engineering Core_test">
<classes>
<class name="com.rationaleemotions.github.issue1951.MSGWebExampleTest"/>
</classes>
</test>
</suite>
åºå
...
... TestNG 7.0.0-beta1 by Cédric Beust ([email protected])
...
Running [chrome, 70, Mac 10.13] on thread [11]
Running [chrome, 70, Windows 10] on thread [12]
Running [internet explorer, 11, Windows 10] on thread [12]
Running [firefox, 63, Mac 10.13] on thread [11]
Running [safari, 12.0, Mac 10.13] on thread [12]
PASSED: openSiteTest on [chrome, 70, Mac 10.13]
PASSED: openSiteTest on [chrome, 70, Windows 10]
PASSED: openSiteTest on [internet explorer, 11, Windows 10]
PASSED: openSiteTest on [firefox, 63, Mac 10.13]
PASSED: openSiteTest on [safari, 12.0, Mac 10.13]
===============================================
Test Engineering Core_test
Tests run: 5, Failures: 0, Skips: 0
===============================================
===============================================
Test Engineering Core Suite
Total tests run: 5, Passes: 5, Failures: 0, Skips: 0
===============================================
äžèšã®åºåãããããããã«ãã¹ã¬ããIDã¯ç°ãªããŸãïŒã¹ã¬ããæ°ã2ã§ãããããå ·äœçã«ã¯2ã€ã®ã¹ã¬ããïŒ
ããªãã®ãµã³ãã«äžã®ããŒã¿ãããã€ãã¯ããã¡ã¯ããªã¡ãœãããžãšNOTã«çžããã@Test
æ¹æ³ã ãããã£ãŠãå®è¡ãããã¹ã¬ããã®æ°ã«åœ±é¿ãäžããããšã¯ãããŸããã
以äžãçºçããå Žåã®ã¿-
@Test
ã¡ãœãããšçµåãããŠããŸã@DataProvider
ã«èšå®ãããŠããtrue
<suite>
ïŒãŸãã¯ïŒ <test>
ã¿ã°ã§å±æ§parallel
ãmethods
ã«èšå®ãããŠããdata-provider-thread-count
å€ã1ãã倧ããå€ã«èšå®ãããŠãã䞊ååŠçã¯TestNGã«ãã£ãŠæå¹ã«ãªããããŒã¿ãããã€ããŒã«ãã£ãŠæäŸããã@Test
ã¡ãœããã®æ°ã¯ãå±æ§data-provider-thread-count.
ä»ããŠèšå®ãããã¹ã¬ããã®æ°ãšçãããªããŸãã
泚ïŒã¹ã€ãŒãxmlãã¡ã€ã«ã®thread-count
å±æ§ã¯ãéåžžã®ã¡ãœããã«ã®ã¿é©çšå¯èœã§ãããã¹ã€ãŒãxmlãã¡ã€ã«ã®data-provider-thread-count
å±æ§ã¯ãããŒã¿ãããã€ããŒãå©çšãããã¹ãã¡ãœããã«ã®ã¿é©çšå¯èœã§ãã
ãã®èª¬æãçã«ããªã£ãŠãããã©ããããããŠãã®åé¡ã解決ã§ãããã©ãããæããŠãã ããã
@krmahadevan詳现ãªåçããããšãããããŸãã æ©äŒãããã°ããããè©ŠããŠã¿ãããšæããŸãã ããã€ã質åããããŸããã
1ïŒããŒã¿ãããã€ããŒïŒãã®å Žåã¯ãdpãïŒã¯ãdata-provider-thread-countããã³parallel = trueã«ãã䞊ååŠçãå®çŸããããã«ãããŒã¿ãããã€ããŒãæž¡ã@Testãšåãã¯ã©ã¹ã§ããå¿ èŠããããŸããïŒ ïŒ
2ïŒã¹ã€ãŒãã¬ãã«ã§ãã¹ããå®è¡ããŸãããïŒ ãããããªããããã¯äžŠååŠçã®èŠ³ç¹ãããéèŠã§ããïŒ ããšãã°ãmvn test -Dgroups = DEBUGã䜿çšããŠsurefireãä»ããŠã°ã«ãŒãDEBUGã®ãã¹ããéå§ããå Žåããã®ã³ãã³ãã®ãã©ã¡ãŒã¿ãŒãä»ããŠããŒã¿ãããã€ããŒã®ã¹ã¬ããæ°ãæž¡ãå¿ èŠããããŸããïŒ
1ïŒããŒã¿ãããã€ããŒïŒãã®å Žåã¯ãdpãïŒã¯ãdata-provider-thread-countã«ãã䞊ååŠçãå®çŸããããã«ãããŒã¿ãããã€ããŒãæž¡ã
@Test
ãšåãã¯ã©ã¹ã§ããå¿ èŠããããŸããïŒãããŠäžŠå=çïŒ
å¿ èŠã¯ãããŸããã ããŒã¿ãããã€ããŒãã©ãã«ãããã¯é¢ä¿ãããŸããã
2ïŒã¹ã€ãŒãã¬ãã«ã§ãã¹ããå®è¡ããŸãããïŒ ãããããªããããã¯äžŠååŠçã®èŠ³ç¹ãããéèŠã§ããïŒ ããšãã°ãmvn test -Dgroups = DEBUGã䜿çšããŠsurefireãä»ããŠã°ã«ãŒãDEBUGã®ãã¹ããéå§ããå Žåããã®ã³ãã³ãã®ãã©ã¡ãŒã¿ãŒãä»ããŠããŒã¿ãããã€ããŒã®ã¹ã¬ããæ°ãæž¡ãå¿ èŠããããŸããïŒ
ã¯ããã¹ã€ãŒãã¬ãã«ã§ãã¹ããå®è¡ããŸããã ããã¯åé¡ã§ã¯ãªãã¯ãã§ãã NS
ããŒã¿ãããã€ããŒã®ã¹ã¬ããæ°ãã¹ã€ãŒããã¡ã€ã«ã§å©çšå¯èœã«ãªã£ãŠããéã
ïŒæäŸãããŠããªãå Žåã®ããã©ã«ãå€ã¯10ã ãšæããŸãïŒãåäœããã¯ãã§ã
ã·ãŒã ã¬ã¹ã«ã
@krmahadevanããã§ãç§ã¯ããªãã®ææ¡ãããå€æŽã䜿çšããŠä»æãã¹ãããããã€ãã®èŠ³å¯ãããæ©äŒããããŸããã
...
... TestNG 7.0.0-beta1 by Cédric Beust ([email protected])
...
org.testng.internal.reflect.MethodMatcherException:
Data provider mismatch
Method: openSiteTest([])
Arguments: [(java.lang.String) chrome,(java.lang.String) 70,(java.lang.String) Windows 10]
at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:40)
at org.testng.internal.Parameters.injectParameters(Parameters.java:936)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1057)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.internal.reflect.MethodMatcherException:
Data provider mismatch
Method: openSiteTest([])
Arguments: [(java.lang.String) chrome,(java.lang.String) 70,(java.lang.String) Windows 10]
at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:40)
at org.testng.internal.Parameters.injectParameters(Parameters.java:936)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1057)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.internal.reflect.MethodMatcherException:
Data provider mismatch
Method: openSiteTest([])
Arguments: [(java.lang.String) chrome,(java.lang.String) 70,(java.lang.String) Windows 10]
at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:40)
at org.testng.internal.Parameters.injectParameters(Parameters.java:936)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1057)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.internal.reflect.MethodMatcherException:
Data provider mismatch
Method: openSiteTest([])
Arguments: [(java.lang.String) chrome,(java.lang.String) 70,(java.lang.String) Windows 10]
at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:40)
at org.testng.internal.Parameters.injectParameters(Parameters.java:936)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1057)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.internal.reflect.MethodMatcherException:
Data provider mismatch
Method: openSiteTest([])
Arguments: [(java.lang.String) chrome,(java.lang.String) 70,(java.lang.String) Windows 10]
at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:40)
at org.testng.internal.Parameters.injectParameters(Parameters.java:936)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1057)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Test ignored.
===============================================
Test Engineering Core Suite
Total tests run: 5, Passes: 0, Failures: 5, Skips: 0
===============================================
Process finished with exit code 0
...
... TestNG 7.0.0-beta1 by Cédric Beust ([email protected])
...
[Utils] [ERROR] [Error] org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="7">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
[Utils] [ERROR] [Error] org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="8">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
[Utils] [ERROR] [Error] org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="9">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
[Utils] [ERROR] [Error] org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="10">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
[Utils] [ERROR] [Error] org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="11">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="12">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="13">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="14">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="15">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
org.testng.TestNGException:
Method public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="16">@DataProvider</strong> named : defaultWebDataProvider
at org.testng.internal.Parameters.findDataProvider(Parameters.java:614)
at org.testng.internal.Parameters.handleParameters(Parameters.java:808)
at org.testng.internal.Parameters.handleParameters(Parameters.java:775)
at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:60)
at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:39)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1024)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:140)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Test ignored.
===============================================
Test Engineering Core Suite
Total tests run: 5, Passes: 0, Failures: 5, Skips: 0
===============================================
ããã«ã€ããŠäœãèãã¯ãããŸããïŒ
ãšã©ãŒã®ããªã¬ãŒã«äœ¿çšãããã¹ãã³ãŒããæããŠãã ããã
äžã«è²Œãä»ããæ£ç¢ºãªtesting.xmlãã¡ã€ã«ã䜿çšããŠããŸãïŒæããã«ãã¯ã©ã¹ã¯ããã±ãŒãžå ã®ãã¹ãã¯ã©ã¹ãæããŠããŸãïŒã ãããç§ã®DataProviderManager.javaã§ã
public class DataProviderManager {
@DataProvider(parallel = true, name = "defaultWebDataProvider")
public static Object[][] defaultWebDataProvider() {
return new Object[][]{
new Object[]{"chrome", "70", "Windows 10"},
new Object[]{"internet explorer", "11", "Windows 10"},
new Object[]{"safari", "12.0", "Mac 10.13"},
new Object[]{"chrome", "70", "Mac 10.13"},
new Object[]{"firefox", "63", "Mac 10.13"}
};
}
}
ãããç§ã®ãã¹ãã¯ã©ã¹ã§ã
public class MSGWebExampleTest extends BaseTest {
// Declare page objects
private MSGHome msgHome;
@Factory(dataProvider = StaticProps.DEFAULT_WEB_DATA_PROVIDER, dataProviderClass = DataProviderManager.class)
// @Factory(dataProvider = StaticProps.DEFAULT_WEB_DATA_PROVIDER)
public MSGWebExampleTest(String browser, String browserVersion, String platform) {
super.setRunParams(browser, browserVersion, platform);
}
@BeforeMethod(alwaysRun = true)
public void setupTest() {
msgHome = new MSGHome();
}
@TestCaseId("")
@Features({GroupProps.WEB})
@Test(groups = {GroupProps.DEBUG}, dataProvider = StaticProps.DEFAULT_WEB_DATA_PROVIDER)
@Parameters({ParamProps.WEB, ParamProps.MOBILE_WEB})
public void openSiteTest() {
Logger.logMessage(Thread.currentThread().getId());
new WebInteract(null, null).pause(1000).openUrl(URLBuilder.buildUrl());
}
// @DataProvider(parallel = true, name = StaticProps.DEFAULT_WEB_DATA_PROVIDER)
// public static Object[][] defaultWebDataProvider() {
// return new Object[][] {
// new Object[]{"chrome", "70", "Windows 10"},
// new Object[]{"internet explorer", "11", "Windows 10"},
// new Object[]{"safari", "12.0", "Mac 10.13"},
// new Object[]{"chrome", "70", "Mac 10.13"},
// new Object[]{"firefox", "63", "Mac 10.13"}
// };
// }
}
ã·ããªãª1ããã¹ãããå Žåã¯ããã¹ãã®å 容ã®ã³ã¡ã³ãã解é€ããŸãã ã·ããªãª2ã®å Žåããã®ãŸãŸå®è¡ã§ããŸã
@ VinceBarresi-ã©ã¡ãã®å Žåãåé¡ã¯ããã¹ãã³ãŒããåå ã§ãã ããã§TestNGã«åé¡ããããšã¯æããŸããã
ã·ããªãª1
ãã¹ãã¡ãœããpublic void openSiteTest()
ã3ã€ã®ãã©ã¡ãŒã¿ãŒdefaultWebDataProvider()
ãè¿ãããŒã¿ãããã€ããŒãšçµã³ä»ããŠãããããã¹ãã¡ãœããã«ã¡ãœããåŒæ°ããªãããããšã©ãŒorg.testng.internal.reflect.MethodMatcherException: Data provider mismatch
ãçºçããŠããŸããå
šãŠã ãã¹ãã¡ãœãããšãããé¢é£ä»ããããŠããããŒã¿ãããã€ããŒãããã©ã¡ãŒã¿ãŒã®é·ããã¿ã€ããããã³é åºã«é¢ããŠãã©ã¡ãŒã¿ãŒã§äžèŽããŠããããšã確èªããå¿
èŠããããŸãã ãã¹ãã³ãŒããä¿®æ£ããŠãã ããã
ã·ããªãª2
ãšã©ãŒMethod public void com.msg.test.coretest.uitests.msgdotcom.MSGWebExampleTest.openSiteTest() requires a <strong i="15">@DataProvider</strong> named : defaultWebDataProvider
ãããã¹ãã³ãŒãã®åé¡ãåå ã§ãã ããŒã¿ãããã€ããŒãDataProviderManager
ãšããååã®å¥ã®ã¯ã©ã¹ã«ç§»åããŸããã ãã ãã @Test
ã¡ãœããã§ã¯ãããŒã¿ãããã€ããŒãååã§åç
§ããŠããã ãã§ãã ããã©ã«ãã§ã¯ãããŒã¿ãããã€ããŒãååšããã¯ã©ã¹åãæå®ããªãå ŽåãTestNGã¯åžžã«çŸåšã®ã¯ã©ã¹ã®ããŒã¿ãããã€ããŒãæ€çŽ¢ããŸãã èŠã€ãããªãã®ã§ãTestNGã¯æå¥ãèšããŸãã ããã§ããããŒã¿ãããã€ããŒãé©åã«åç
§ã§ããããã«ããã¹ãã³ãŒããä¿®æ£ããå¿
èŠããããŸãã
å ã®åé¡ã¯è§£æ±ºããããŸãŸãªã®ã§ã質åã«åçããã®ã§ããã®åé¡ã解決ããŠçµäºããŸã
@krmahadevanããã¯ç§ã®åŽã®DataProviderã®èª€è§£ã§ã-ãã¹ãèªäœã§ããããæž¡ããããã©ã¡ãŒã¿ãŒã¯å¿ èŠãªãã®ã§ïŒã»ã¬ã³æ©èœã«æž¡ãããã«ã¹ã¬ããããŒã«ã«ã²ãã¿ãŒãšã»ãã¿ãŒã§ããããå¿ èŠã§ãïŒç§ã¯å¿ èŠã ãšæ°ã¥ããŠããŸããã§ããããããå®éã®ãã¹ãã¡ãœããã«æž¡ããŸãã ãããçä»ããŠãããŠæ¬åœã«ããããšãïŒ
å°ãæéãããã°ã䞊ååŠçã«ã€ããŠãã1ã€è³ªåããããŸã-ããŒã¿ãããã€ããŒã®ã¹ã¬ããæ°ãã¹ã¬ããæ°ãèšå®ããŠã5ã€ã®ããŒã¿ã»ãããã¹ãŠã
@DataProvider(parallel = true, name = "dp")
public static Object[][] defaultWebDataProvider() {
return new Object[][]{
new Object[]{"chrome", "70", "Windows 10"},
new Object[]{"internet explorer", "11", "Windows 10"},
new Object[]{"safari", "12.0", "Mac 10.13"},
new Object[]{"chrome", "70", "Mac 10.13"},
new Object[]{"firefox", "63", "Mac 10.13"}
};
}
@testããšã«ãŸã£ããåæã«å®è¡ããŸããïŒ çŸåšã䞊è¡ããŠå®è¡ã§ããŸãããåã»ãããåæã«å®è¡ããã®ã§ã¯ãªããåãã»ããïŒ "chrome"ã "70"ã "Windows 10"ãªã©ïŒãnåã®ã¹ã¬ããåæ°ã§å®è¡ããŸãã
ããŒã¿ãããã€ããŒã§ãã¡ã¯ããªïŒ @Factory
ã¢ãããŒã·ã§ã³ïŒã䜿çšããå¿
èŠããããŸãã
ãã¡ã¯ããªã¯ããŒã¿ãããã€ããŒã䜿çšããŠåºæ¬çã«ãã¹ãã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ïŒ1ã€ä»¥äžã®@Test
ã¡ãœãããæ ŒçŽããã¯ã©ã¹ïŒãäœæããããããå®è¡ããããšãTestNGã¯ã€ã³ã¹ã¿ã³ã¹å
ã®ãã¹ãŠã®ãã¹ãã¡ãœãããå®è¡ããããšãä¿èšŒããŸãïŒå±æ§parallel=instances
䜿çšããŸãïŒ
@krmahadevan @Factoryã䜿çšããŠããŸããããã¯ãDataProviderãããã©ãŠã¶ãŒãããŒãžã§ã³ããã©ãããã©ãŒã ãªã©ã®æ©èœãã»ããã¢ããããWebDriverã®ã¹ã¬ããã»ãŒãã€ã³ã¹ã¿ã³ã¹ãåæåããŸãã ïŒparallel = instancesïŒãèšå®ãããšããã¹ãã¯äžŠè¡ããŠå®è¡ãããŸããã以äžã«ç€ºãããã«ãDataProviderããåããã©ãŠã¶ãŒãããŒãžã§ã³ããã©ãããã©ãŒã ã§è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠããŸãã
Safariã12ãMac 10.13ã§ããããè€æ°ã®ã¹ã¬ãããå®è¡ãã代ããã«ã-ãšäžŠè¡ããŠè€æ°ã®ã¹ã¬ããã§ãã¹ããå®è¡ããããšããŠããŸãã
new Object [] {"chrome"ã "70"ã "Windows 10"}ãããã¯ã¹ã¬ãã1ã§ããå¿
èŠããããŸã
new Object [] {"internet explorer"ã "11"ã "Windows 10"}ãããã¯ã¹ã¬ãã2ã§ããå¿
èŠããããŸã
new Object [] {"safari"ã "12.0"ã "Mac 10.13"}ãããã¯ã¹ã¬ãã3ã§ãââãå¿
èŠããããŸã
new Object [] {"chrome"ã "70"ã "Mac 10.13"}ãããã¯ã¹ã¬ãã4ã§ããå¿
èŠããããŸã
new Object [] {"firefox"ã "63"ã "Mac10.13"}ããã¯ã¹ã¬ãã5ã§ããå¿
èŠããããŸã
@ VinceBarresi-ã¹ã¿ãã¯ãªãŒããŒãããŒã«é¢ããããªãã®è³ªåã«è©³çŽ°ãªåçãè¿œå ããŸããã
ç°¡åã«èšããšã @Factory
ãš@DataProvider
ã䜿çšããŠãã¹ãã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ãçæãããšãTestNGã¯ãã¹ãã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ã䞊åã«ã€ã³ã¹ã¿ã³ã¹åããŸãããå@Test
åãã¹ãã¯ã©ã¹ã®ã¡ãœãããé çªã«ã
@krmahadevan StackOverflowã§ã®è¿ä¿¡ã¯éåžžã«åçºçã§ãããããããšãããããŸãïŒ
1ã€ã®è³ªåïŒãã¹ãŠã®ãã¹ãã«åãããŒã¿ãããã€ããŒã䜿çšãããšããŸãã ãã¹ãŠã®ã¯ã©ã¹ã§ãã¡ã¯ããªã³ãŒãã®éè€ãåé¿ããæ¹æ³ã¯ãããŸããïŒ
ããããšãïŒ
@borbamartin - @Factory
ã¢ãããŒã·ã§ã³ã®dataProviderClass
å±æ§ã䜿çšããŠããã¹ãŠã®@Factory
ãã¯ãŒããã¡ã¯ããªã«åãããŒã¿ãããã€ããŒãå
±æãããããšãã§ããŸãã
StackOverflowãžã®è¿ä¿¡ã¯éåžžã«åçºçã§ãããããããšãããããŸãã
ãããããªããå©ããããšãç¥ã£ãŠããããã§ãð
@krmahadevanã¯ããèšãæããããŠãã ããã
ããããè€æ°ã®ãã¹ããå«ã50ã®ãã£ãŒãã£ã¯ã©ã¹ããããšããŸãããã ããã¯ç§ã次ã®50åãæžããªããã°ãªããªãããšãæå³ããŸãïŒåã¯ã©ã¹ã§ïŒ
@Factory(dataProvider = "browserMatrix")
public LoginFeature(BrowserConfig browserConfig) {
super.browserConfig = browserConfig;
}
質åã¯ãTestNGã¯ããã¹ãŠã®ãã¹ãã¯ã©ã¹ã§ãããæžããªãããã«ããããã«äœ¿çšã§ãããã®ãæäŸããŸããïŒ
ããäžåºŠããããšãïŒ
@ borbamartin-ç§ã®ç¥ãéããTestNGã«ã¯ãããèªåçã«è¡ããã®ã¯ãããŸããã ããªãã¯ãããèªåã§ããå¿ èŠãããã§ãããã