我使用了@BeforeTest和@AfterTest Annotations。请在下面找到代码
WebDriverFactory wd = new WebDriverFactory();
//@Parameters({"browserName","appURL"})
@BeforeTest
public void setBrowser(String browserName, String appURL){
wd.setDriver("chrome", "https:URL");
}
@AfterTest
public void tearDown()
{
wd.closeBrowser();
}
低于错误
AILED CONFIGURATION:@BeforeTest setBrowser org.testng.TestNGException: 只能注入一个BeforeTest注释的setBrowser。 有关本机依赖注入的更多信息,请参阅http://testng.org/doc/documentation-main.html#native-dependency-injection at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:244) 在org.testng.internal.Parameters.createParameters(Parameters.java:172)
答案 0 :(得分:2)
错误的原因很简单:
您的@BeforeTest
带注释的方法正在接受两个String参数,但您没有通过@Parameters
注释注入这些参数(我在您共享的代码中看到了这一点,您已将其注释掉了)。
TestNG基本上抱怨说它不知道提供什么作为这两个String参数的值,而TestNG只能原生地注入一个
ITestContext
您的@BeforeTest
带注释的方法签名看起来像public void setBrowser(ITestContext context){
(或)XmlTest
您的@BeforeTest
带注释的方法签名看起来像public void setBrowser(XmlTest xmlTest){
因此,您需要在@Parameters
方法之上取消注释setBrowser()
注释,或将其签名更改为以上两种变体之一。
答案 1 :(得分:0)
我同意克里希南(Krishnan)的观点,它可以解决您的问题;但是,如果您不想使用ITestContext或XmlTest之一,则有另一种简单的解决方案。
请不要在与@Parameters关联的setBrowser函数中使用任何参数。通过删除这些参数,您的测试将运行,并且您不会观察到此错误。
第二,在这种情况下,对于浏览器名称和应用程序URL,应使用config.properties。