2016-09-17 71 views
-1

我们是否需要按照数组对象相同的序列,而使用的dataObjectDataProvider的顺序TestNG中

如:代码

@DataProvider(name = "test1") 
    public static Object[][] primeNumbers() { 
      return new Object[][] {{2, true}, {6, false}, {19, true}, {22, false}, {23, true}}; 
    } 

    // This test will run 4 times since we have 5 parameters defined 
    @Test(dataProvider = "test1") 
    public void testPrimeNumberChecker(Integer inputNumber, Boolean expectedResult) { 
      System.out.println(inputNumber + " " + expectedResult); 
      Assert.assertEquals(expectedResult, 
      primeNumberChecker.validate(inputNumber)); 
    } 

DataProviderIntegerBoolean的使用和相同的序列在testPrimeNumberChecker使用。如果需要,我可以在任何功能中只使用Boolean记录。如通过@DataProvider方法传递

回答

1

类型,数目和顺序/的@Test方法的输入参数序列必须相同。

我们是否需要按照数组对象相同的序列,而使用使用dataObject

在这里,我承担起你的意思是传递参数的方法@Test答案这是 - 是的我们需要在使用dataObject时遵循数组对象中的相同序列。

@Test(dataProvider = "test1") 
    public void testPrimeNumberChecker(Boolean expectedResult, Integer inputNumber) { 
// your test method stuff 
} 

如果你不遵循这一点,你会得到异常如下:

java.lang.IllegalArgumentException: argument type mismatch 

我只能使用布尔记录中的任何功能的,如果我需要。

这里也是我对使用假设你的意思来传递参数的方法@Test。答案是 - ,参数的数量很重要。

@Test(dataProvider = "test1") 
    public void testPrimeNumberChecker(Boolean expectedResult) { 
// your test method stuff 
} 

因此,如果您@Test方法有更少或更多数量的@DataProvider方法传递什么样的输入参数(S),你会得到下面的异常:

org.testng.TestNGException: 
The data provider is trying to pass 2 parameters but the method yourpackage.YourTestClass#testPrimeNumberChecker takes 1 
相关问题