Гарантирует ли JUnit 5 связь «происходит до» для упорядоченных методов тестирования?

#java #concurrency #junit5

#java #параллелизм #junit5

Вопрос:

Иногда я заказываю методы тестирования, используя следующую аннотацию: @TestMethodOrder(MethodOrderer.OrderAnnotation.class)

Гарантирует ли JUnit 5 связь «происходит до» для них? Другими словами, все ли изменения с помощью метода тестирования видны для всех последующих методов тестирования?

Вот мой конкретный вариант использования, хотя я не уверен, считается ли это хорошим стилем:

У меня есть интеграционный тест, который выполняет несколько шагов: 1) подключение к серверу (т.Е. Создание объекта подключения), 2) выдача запроса1, 3) выдача запроса2. Порядок этих запросов важен. Я разделил эти шаги на несколько методов тестирования JUnit, выполняемых по порядку. Шаг 1) сохраняет объект connection в статическом поле, чтобы он был доступен с помощью шагов 2) и 3). Мне было интересно, должен ли я сделать объект connection, созданный на шаге 1) volatile, или JUnit гарантирует его видимость на шагах 2) и 3).

Комментарии:

1. Это теоретический вопрос или вы столкнулись с конкретной проблемой при выполнении тестов по порядку?

2. @johanneslink Я добавил свой вариант использования. Мне также было бы интересно узнать, считается ли это плохим стилем.

Ответ №1:

Да, JUnit 5 гарантирует связь «происходит до» в своей конфигурации по умолчанию, потому что по умолчанию все тесты класса выполняются последовательно одним и тем же потоком, как описано здесь .