2016-09-17 77 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 
相關問題