Как параметризовать beforeEach () в JUnit 5? - PullRequest
0 голосов
/ 27 мая 2020

Я использую JUnit 5 в качестве средства выполнения тестов.

В методе настройки я жестко запрограммировал 3 параметра (platformName, platformVersion и deviceName). У меня есть метод тестирования, который должен тестировать различные комбинации ... Это означает, что при запуске моего testLogin() теста он должен работать на нескольких именах платформ, версиях, именах устройств ...

Итак, я попробовал как показано ниже ...

@BeforeEach
@CsvSource({"IOS,13.0,iPhone X Simulator", "IOS,13.2,iPhone Simulator", "IOS,13.3,iPhone XS Simulator"})
void setUp(String platformName, String platformVersion, String deviceName) throws MalformedURLException {
    ....
    capabilities.setCapability("platformName", platformName);
    capabilities.setCapability("platformVersion", platformVersion);
    capabilities.setCapability("deviceName", deviceName);
    capabilities.setCapability("methodName", testInfo.getDisplayName());
}

Мой вопрос: как можно параметризовать метод beforeEach()? Также я хочу получить имя тестового метода ... Итак, если я укажу параметры, то где я должен указать параметр TestInfo.

Помогите, пожалуйста. Я также видел следующий вопрос ...

Параметризовано beforeEach / beforeAll в JUnit 5

========

public class TestBase {

    @BeforeEach
    void setUp(TestInfo testInfo) throws MalformedURLException {
        MutableCapabilities capabilities = new MutableCapabilities();
        capabilities.setCapability("platformName", "iOS");
        capabilities.setCapability("platformVersion", "13.2");
        capabilities.setCapability("deviceName", "iPhone Simulator");
        capabilities.setCapability("name", testInfo.getDisplayName());
        capabilities.setCapability("app", “/home/my-user/testapp.zip");

        driver = new IOSDriver(
                new URL("https://192.168.1.4:5566/wd/hub"),
                capabilities
        );
    }
}
public class LoginTest extends TestBase {

    @Test
    public void testLogin() {
        driver.findElement(By.id("user-name")).sendKeys(“myuser);
        driver.findElement(By.id("password")).sendKeys(“mypassword);
        driver.findElement(By.id(“login_btn”)).click();
        assertTrue(true);
    }
}

1 Ответ

0 голосов
/ 30 мая 2020

Метод @BeforEach параметризовать нельзя. JUnit5 поддерживает только параметризованные тесты (методы тестирования).

Параметризованные тесты объявляются так же, как обычные методы @Test, но вместо этого используются аннотации @ParameterizedTest. Кроме того, вы должны указать хотя бы один источник (например, @CsvSource, @ValueSource, et c.)

Например:

    @ParameterizedTest
    @CsvSource({
        "apple,         1",
        "banana,        2",
        "'lemon, lime', 0xF1"
    })
    void testWithCsvSource(String fruit, int rank) {
        assertNotNull(fruit);
        assertNotEquals(0, rank);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...