在运行 Selenium 案例时,我希望 firefox 和 chrome 在同一个版本中。我的 testng.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Browser Compatibility Test Cases--firefox" thread-count="1" preserve-order="false">
<parameter name="browserType" value="firefox" />
<classes>
<class name="com.yeetrack.selenium.test.ParameterTest" />
</classes>
</test>
<test name="Browser Compatibility Test Cases--chrome" thread-count="1" preserve-order="false">
<parameter name="browserType" value="chrome" />
<classes>
<class name="com.yeetrack.selenium.test.ParameterTest" />
</classes>
</test>
</suite>
还有我的测试用例:
public class ParameterTest {
@Parameters("browserType")
@BeforeMethod
public void before(String browser)
{
System.out.println(browser);
}
@Test(dataProvider = "KeywordDataProvider", dataProviderClass = KeywordData.class)
public void test(String keyword)
{
System.out.println(keyword);
}
}
但我得到一个错误:
before(com.yeetrack.selenium.test.ParameterTest) Time elapsed: 0.222 sec <<< FAILURE!
org.testng.TestNGException:
Parameter 'browserType' is required by @Configuration on method before
but has not been defined in src\test\resources\testng.xml
at org.testng.internal.Parameters.createParameters(Parameters.java:109)
at org.testng.internal.Parameters.createParameters(Parameters.java:264)
at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:69)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:135)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:427)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:607)
运行的时候,browserType=firefox,就通过了。但是当 browserType=chrome 时,它失败了。我不能同时使用@Parameters 和 DataProvider 吗?当我将案例更改为:
@Test //no DataProvider
public void test()
{
System.out.println("Hello world"));
}
它通过了!为什么?谢谢。