Как запустить методы тестирования в определенном порядке в JUnit4?

Обычно новая строка «\r\n». В моем CSV я заменил «\r» пустым значением. Вот код в Javascript:

cellValue = cellValue.replace(/\r/g, "")

Когда я открываю CSV в MS Excel, он работал хорошо. Если значение имеет несколько строк, оно останется в пределах одной отдельной ячейки на листе Excel.

385
задан ROMANIA_engineer 28 October 2014 в 10:59
поделиться

1 ответ

обновление JUnit 5 (и мое мнение)

я думаю, что это - довольно важная функция JUnit, если автор JUnit не хочет функцию порядка, почему?

По умолчанию, библиотеки поблочного тестирования не пытаются выполнить тесты в порядке, который происходит в исходном файле.
JUnit 5 как работа JUnit 4 таким образом. Почему? Поскольку, если порядок имеет значение, что это означает, что некоторые тесты связаны между ними и это нежелательный для модульных тестов .
Так @Nested функция, представленная JUnit 5, следует за тем же подходом по умолчанию.

, Но для интеграционных тестов, порядок метода тестирования может иметь значение , так как метод тестирования может изменить состояние приложения, способом ожидаемого другим методом тестирования. Например, когда Вы пишете интеграционный тест на обработку контроля электронного магазина, первый метод тестирования, который будет выполняться, регистрирует клиент, второе добавляет объекты в корзине, и последний делает контроль. Если исполнитель тестов не уважает тот порядок, сценарий тестирования испорчен и перестанет работать.
Так в JUnit 5 (от 5,4 версий) у Вас есть все равно возможность установить порядок выполнения путем аннотирования тестового класса @TestMethodOrder(OrderAnnotation.class) и путем определения порядка с @Order(numericOrderValue) для методов, которые имеет значение порядок.

, Например:

@TestMethodOrder(OrderAnnotation.class) 
class FooTest {

    @Order(3)
    @Test
    void checkoutOrder() {
        System.out.println("checkoutOrder");
    }

    @Order(2)
    @Test
    void addItemsInBasket() {
        System.out.println("addItemsInBasket");
    }

    @Order(1)
    @Test
    void createUserAndLogin() {
        System.out.println("createUserAndLogin");
    }
}

Вывод:

createUserAndLogin

addItemsInBasket

checkoutOrder

Между прочим, указывая @TestMethodOrder(OrderAnnotation.class) похож не нужный (по крайней мере, в 5.4.0 версиях, которые я протестировал).

примечание
Стороны О вопросе: действительно ли JUnit 5 является лучшим выбором записать интеграционные тесты? Я не думаю, что это должен быть первый инструмент, который рассмотрит (Cucumber and co может часто приносить более определенное значение и функции интеграционных тестов), но в некоторых случаях интеграционного теста, платформа JUnit достаточно. Таким образом, это - хорошие новости, что функция существует.

3
ответ дан 22 November 2019 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: