從你的描述我知道你需要一個數據提供程序(這正是,方法提供多個測試案例或可替代多個數據相同的數據在同一測試案例) 。
@DataProvider(name = "dataProviderFor5TestCases")
public Object[][] createData() {
return new Object[][] {
{ "Joe", new Integer(43) },
{ "Mary", new Integer(32)},
};
}
然後你就可以在你的測試用例聲明dataProvider中這樣:
@Test(dataProvider = "dataProviderFor5TestCases")
public void testCase1(String name, Integer age) {
System.out.println(name + " " + age);
}
結果將是:
Joe 43
Mary 32
所以testCase1將與創建的數據集執行兩次在dataProvider中。但是,我認爲你需要所有5個測試用例(可實現)的相同數據。
現在,關於執行時間。我不是100%確定,但我相信數據是按需創建的(即,如果testCase跳過或失敗,則沒有創建數據;但是我有一個非常小的負載,所以請嘗試並讓我們知道!)
後
更新OP的評論: 所以,你可能會更好過,使用testGroups然後將適合你的測試和清理後前兩個設置(不被調用不相關的測試用例):
@Test(groups = { "init" })
public void serverInit() {
startServer();
}
@Test(groups = { "init" })
public void initEnvironment() {
createUsers()
}
@Test(groups = { "cleanup"}, dependsOnGroups = { "init.*" })
public void testCase1() {
//perform your tests
}
@Test(dependsOnGroups = { "cleanup"})
puplic void cleanup(){
deleteUsers();
killServer();
}
以上testCase1 將不會被執行如果有任何init測試方法失敗(即服務器無法啓動)。另外,如果testCase1成功,則只會調用清理方法。如果你想不管testCase1待運行清理方法導致您可以使用alwaysRun像這樣:
@Test(dependsOnGroups = { "cleanup"}, alwaysRun=true)
希望幫助! 祝你好運!
例從這裏取: TestNG DataProvider
我可能這5次試驗中分離出一個單獨的類。想象一下,可憐的靈魂試圖用15個測試來閱讀你的測試課,並試圖找出哪些設置代碼屬於哪個。 – biziclop