TestNG - Как запустить установку один раз перед всеми тестами в классе для каждого параллельного запуска - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь выяснить, возможно ли запустить установку один раз для каждого экземпляра параллельного класса.

Если у меня есть следующий класс тестирования, из-за DataFactory (CSV имеет 2 строки данных, по одной для каждого теста), два теста запускаются параллельно

Возможно ли заставить testSetup () запускаться один раз для каждого экземпляра класса TestFu. BeforeClass, кажется, запускает его один раз перед обоими параллельными тестовыми экземплярами.

TestXML

<suite name="SomeTest" parallel="none" thread-count="20" verbose="2">
    <test name="Graph+APITests" parallel="instances" thread-count="5">
        <classes>
            <class name="TestFu" />
        </classes>
    </test>
</suite>

Тестовый класс

public class TestFu {

    String var1;

    @Factory(dataProvider = "testStuff")
    public TestFu(String var1, String var2) {
        this.var1 = var1;
        this.var2 = var2;
    }

    @DataProvider(name = "testStuff")
    public static Object[][] stuff() {

        return methodThatLoadsVarsFromCSV;
    }

    @BeforeClass
    public void testSetup() {
        System.out.println("Doing setup");
    }

    @Test
    public void testOne() {
        System.out.println("Test 1 " + this.var1);
    }

    @Test
    public void testTwo() {
        System.out.println("Test 2 " + this.var2);
    }
}

1 Ответ

1 голос
/ 31 мая 2019

Используйте static флаг, подобный этому:

    static boolean initialized = false;

    @BeforeClass
    public void testSetup() {
        if (!initialized) {
            initialized = true;
            System.out.println("Doing setup");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...