Сравнить текст с несколькими значениями

Учусь писать автотесты на java + testNg. Задание заключается в том, чтобы провести регистрацию с ошибкой нескольких аккаунтов и проверить ошибки. Я использую @DataProvider чтобы поместить там всю информацию для полей ввода и один @Test для прогона. В этом суть задания. Также, нужно провести assert полученной ошибки. Каждый раз ошибка разная и я ищу способ, как можно сравнить одну строку с несколькими и как записать такой метод.

Пробовал добавить строки с ошибками в файл c DataProvider, но в таком случае тест даже не запускается

package ui_tests;

public class DataProvider {

        @org.testng.annotations.DataProvider(name = "LoginData")
        public static Object[][] dataProviderMethod() {
            Object[][] data = new Object[4][7];

            data[0][0] = "AlexWind";
            data[0][1] = "asdqweQwse1123";
            data[0][2] = "asdqweQse1123";
            data[0][3] = "Alex";
            data[0][4] = "Finch";
            data[0][5] = "[email protected]";
            data[0][6] = "blessed";

            data[1][0] = "SashaBoozer";
            data[1][1] = "asdqweQwse1123";
            data[1][2] = "asdqweQwse1123";
            data[1][3] = "Sasha";
            data[1][4] = "Fincher";
            data[1][5] = "testtest.com";
            data[1][6] = "godDamnThisTest";

            data[2][0] = "AlenaMix";
            data[2][1] = "a1";
            data[2][2] = "a1";
            data[2][3] = "Alena";
            data[2][4] = "Smith";
            data[2][5] = "[email protected]";
            data[2][6] = "whatAmIdoingWithMyLife";

            data[3][0] = "Пароль не совпадает с подтверждением";
            data[3][1] = "Email имеет неверное значение";
            data[3][2] = "Пароль недостаточной длины (не может быть меньше 4 символа)";


            return data;
        }
    }

Ответы (1 шт):

Автор решения: Alex Rudenko

Если возникают разные ошибки, для них следует писать разные тесты.

В указанном наборе данных просматриваются три теста, и соответствующая ошибка должна быть перенесена в каждый тест, например, так:

@DataProvider(name = "soTest")
public static Object[][] dataProviderMethod() {
    Object[][] data = new Object[3][8]; // коррекция размеров!

    data[0][0] = "AlexWind";
    data[0][1] = "asdqweQwse1123";
    data[0][2] = "asdqweQse1123";
    data[0][3] = "Alex";
    data[0][4] = "Finch";
    data[0][5] = "[email protected]";
    data[0][6] = "blessed";
    data[0][7] = "Пароль не совпадает с подтверждением";

    data[1][0] = "SashaBoozer";
    data[1][1] = "asdqweQwse1123";
    data[1][2] = "asdqweQwse1123";
    data[1][3] = "Sasha";
    data[1][4] = "Fincher";
    data[1][5] = "testtest.com";
    data[1][6] = "godDamnThisTest";
    data[1][7] = "Email имеет неверное значение";

    data[2][0] = "AlenaMix";
    data[2][1] = "a1";
    data[2][2] = "a1";
    data[2][3] = "Alena";
    data[2][4] = "Smith";
    data[2][5] = "[email protected]";
    data[2][6] = "whatAmIdoingWithMyLife";
    data[2][7] = "Пароль недостаточной длины (не может быть меньше 4 символа)";

    return data;
}

Тогда, предполагая что у вас есть некий валидатор данных, принимающий на вход метода validate 6 полей и возвращающий ошибку, можно написать такой тест:

@Test(dataProvider = "soTest")
public void soTest(String login, String pass1, String pass2, String fname, String lname, String email, String secret, String errorMessage) {
    assertEquals(myValidator.validate(login, pass1, pass2, fname, lname, email, secret), errorMessage);
}
→ Ссылка