为什么TestNG抱怨使用@QAFDataProvider

时间:2019-02-24 14:28:15

标签: 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]注入@Test注释方法[testLoginPage]。 有关本机依赖项注入的更多信息,请参阅http://testng.org/doc/documentation-main.html#native-depend 整体注入         在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)

1 个答案:

答案 0 :(得分:0)

您已经注意到您的方法不适用于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。