java如何解析只能将<ITestContext,XmlTest>中的一个注入到BeforeTest注释的setBrowser错误中
我使用了@BeforeTest和@AfterTest注释。请查找下面的代码
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();
}
并且在误差以下
配置失败:@BeforeTest setBrowser 组织。testng。TestNgeException: 只能将其中一个注入到带有BeforeTest注释的setBrowser中。 有关本机依赖项注入的更多信息,请参阅http://testng.org/doc/documentation-main.html#native-dependency-injection 在org。testng。内部的参数。checkParameterTypes(Parameters.java:244) 在org。testng。内部的参数。createParameters(Parameters.java:172)
# 1 楼答案
我同意克里希南的观点,它可以解决你的问题;然而,如果您不想使用ITestContext或XmlTest中的一种,那么还有另一个简单的解决方案
只是不要在setBrowser函数中使用与@Parameters关联的任何参数。通过删除这些参数,您的测试将运行,您将不会观察到此错误
其次,对于浏览器名称和应用程序url,应该使用config。本例中的属性
# 2 楼答案
错误的原因非常简单:
你的
@BeforeTest
注释的方法接受两个字符串参数,但你没有通过@Parameters
注释注入这些参数(我在你共享的代码中看到,你已经注释掉了它)TestNG基本上是在抱怨它不知道为这两个字符串参数提供什么值,TestNG只能在本地注入
ITestContext
对象,其@BeforeTest
注释的方法签名看起来像public void setBrowser(ITestContext context){
(或)XmlTest
对象,其@BeforeTest
注释的方法签名看起来像public void setBrowser(XmlTest xmlTest){
因此,您需要在
setBrowser()
方法的顶部取消@Parameters
注释的注释,或者将其签名更改为上述两种变体之一