У меня есть несколько тестовых случаев, которые зависят друг от друга.Порядок выполнения может быть определен в TestNG с использованием groups и disabledOnGroups в аннотации @Test
:
public class MyTest {
@Test(groups = { "group1" })
public void testCase1() {
}
@Test(groups = {"group2"}, dependsOnGroups = { "group1" })
public void testCase2() {
}
@Test(groups = {"group2"}, dependsOnGroups = { "group1" })
public void testCase() {
}
@Test(groups = { "group3" }, dependsOnGroups = { "group2" })
public void testCase4() {
}
}
Но я хочу его динамически только с одним @Test
метод и @DataProvider
, который дает мне группу и зависимости.
public class MyTest {
@Test(dataProvider = "test-cases", groups = {testCase[1]}, dependsOnGroups = {testCase[2]})
public void executeTest(TestCase testCase) throws Exception {
}
@DataProvider(name = "test-cases", parallel = true)
public Object[][] getTestCases() {
Object[][] testdata = new Object[...][...];
// Fields: test name, group, depends on, test data
testdata[0] = {"TC#1", "group1", "", "foo data"};
testdata[1] = {"TC#2", "group2", "group1", "bar data"};
testdata[2] = {"TC#3", "group2", "group1", "bzz data"};
testdata[3] = {"TC#4", "group3", "group2", "frr data"};
return testdata;
}
}
К сожалению, этот подход не работает, так как testCase [1] не может быть доступен из аннотации @Test(..., groups = {testCase[1]}, ...)
.
Существует ли другой подход для включения тестов, управляемых поставщиком данных, вфиксированный заказ?