2016-07-13 23 views
0

我想創建一個testNG數據提供者方法,它將從我的項目中返回一個自定義類的對象數組。這個數組是一維數組,我不想從這個數據提供者方法返回二維數組。請建議,Dataprovider總是返回一個2D數組(不少於或超過2D)。如果是,那麼我需要以下行的幫助:如何在TestNG中創建1D Dataprovider方法?

return new Object [] [] {{user [0]},{user [1]},{user [2]},{user [3]} }

我們能否以更好的方式編寫這行代碼,因爲如果將來這個數組擴展會有4個以上的元素,那麼我們將不得不編輯這個完整的函數,我們不能使用list等嗎?

下面是我目前使用的代碼:

@DataProvider(name = "credentialsProvider", parallel=false) 
public static Object[][] credentialsProvider() throws Exception { 
    User[] user=new User[4]; 
    user[0]=new User(UserTypes.AGENCY_MANAGER,1); 
    user[1]=new User(UserTypes.AGENT,1); 
    user[2]=new User(UserTypes.AGENCY_MODERATOR,1); 
    user[3]=new User(UserTypes.EW_ECS_AGENCY_MANAGER,1); 
    return new Object[][]{{user[0]},{user[1]},{user[2]},{user[3]}}; 
    }; 
} 
+0

我有一個包裝,使它很容易使用U需要這樣的事?@dataProvider(NAME = 「類別」) \t公共對象[] [] testCategoryRead()拋出異常{ \t \t回報提供商。 testDataBuilder() \t \t \t \t .withAttribute( 「站點」,siteUS).capture() \t \t \t \t .build(); \t} –

回答

0

沒有爲數據提供程序是2D的理由 - 今天你要傳遞的數據的一個字符串,如果你必須通過我們的說一個User對象和一個UserDetails對象到一個測試用例,你需要一種方法來傳遞這兩個數據,因此單元數組基本上是你需要傳遞給單一測試的,而2d則是用於這樣的多個數據的列表。

爲什麼不循環用戶數組來添加用戶對象,而不是通過索引在一行中進行查看。如果有東西被添加,你只需要定義用戶對象,for循環會遍歷整個長度。

相關問題