#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 гарантирует связь «происходит до» в своей конфигурации по умолчанию, потому что по умолчанию все тесты класса выполняются последовательно одним и тем же потоком, как описано здесь .