有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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)


共 (2) 个答案

  1. # 1 楼答案

    我同意克里希南的观点,它可以解决你的问题;然而,如果您不想使用ITestContext或XmlTest中的一种,那么还有另一个简单的解决方案

    只是不要在setBrowser函数中使用与@Parameters关联的任何参数。通过删除这些参数,您的测试将运行,您将不会观察到此错误

    其次,对于浏览器名称和应用程序url,应该使用config。本例中的属性

  2. # 2 楼答案

    错误的原因非常简单:

    你的@BeforeTest注释的方法接受两个字符串参数,但你没有通过@Parameters注释注入这些参数(我在你共享的代码中看到,你已经注释掉了它)

    TestNG基本上是在抱怨它不知道为这两个字符串参数提供什么值,TestNG只能在本地注入

    • ITestContext对象,其@BeforeTest注释的方法签名看起来像public void setBrowser(ITestContext context){(或)
    • XmlTest对象,其@BeforeTest注释的方法签名看起来像public void setBrowser(XmlTest xmlTest){

    因此,您需要在setBrowser()方法的顶部取消@Parameters注释的注释,或者将其签名更改为上述两种变体之一