如何解决只能将<itestcontext,xmltest =“”>中的一个注入到BeforeTest注释的setBrowser错误

时间:2017-08-07 09:49:34

标签: java testng

我使用了@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)

2 个答案:

答案 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。