java - 为什么 TestNG 提示使用 @QAFDataProvider

标签 java testng qaf

@QAFDataProvider(dataFile = "src/test/resources/data/logintestdata.csv")
@Test(testName="testLoginPage", description="Login Page landing validation", priority=1, groups={"SMOKE"})
public void testLoginPage(Map<String, Object> data) {       

    // QAF - Qmetry Automation Framework calls

      get("/"); // Check base url in src/test/resources/application.properies file

      verifyText("login.box.header", "Sign In");
      verifyLinkWithTextPresent("Or Sign Up");
      verifyPresent("login.input.username");
      verifyPresent("login.input.password");
      verifyPresent("login.button.submit");
}

[错误] org.testng.TestNGException: 无法使用 [interface java.util.Map] 注入(inject) @Test 注释方法 [testLoginPage]。 有关 native 依赖项注入(inject)的更多信息,请参阅 http://testng.org/doc/documentation-main.html#native-depend ency注入(inject) 在 org.testng.internal.Parameters.checkParameterTypes(Parameters.java:244) 在 org.testng.internal.Parameters.createParameters(Parameters.java:172) 在 org.testng.internal.Parameters.createParameters(Parameters.java:458) 在 org.testng.internal.Parameters.handleParameters(Parameters.java:568) 在 org.testng.internal.Invoker.handleParameters(Invoker.java:1293) 在 org.testng.internal.Invoker.createParameters(Invoker.java:1020) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1110) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

最佳答案

正如您已经注意到的,您的方法不适用于 java.util.Map 作为参数。您是否尝试过改用 DataProvider?

这里是一个简短的例子:

@DataProvider(name = "data")
public static Object[][] dataProvider() {
    return new Object[][] { { "key1", "value1" }, { "key2", "value2" }};
}

@Test(dataProvider = "Authentication")
public void testLoginPage(String key, String value) {     
  //do something
}

testLoginPage 方法会针对数据提供程序中的每个键值对调用一次。不确定它是否也适用于 java.util.Map。

关于java - 为什么 TestNG 提示使用 @QAFDataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852879/

相关文章:

java - 功能文件的 CustomDataProvider (QAF)

java - 如何从网页(标签内)的 HTML 页面源中提取数据?

java - 对于嵌套 TreeMap 的每个循环

java - JSF 2.2 java.lang.IllegalStateException : Cannot create a session after the response has been committed

java - 如何修复数据驱动(DataProvider)中的stackOverFlow错误

testing - xpath 在 tr 中找到两个元素

java - openapi生成-初始化对象

java - 使用数据提供者时使用 Test-ng 优先级

java - 如何使用不同的包管理 Selenium 项目代码(如页面对象模型/关键字驱动框架)

java - 是否可以从 cucumber-jvm 迁移到 QAF?