Ответ 1
Различие становится ясным, когда у вас есть более одного метода тестирования в классе.
@ClassRule
имеет свой метод before()
запущенный перед любым из тестовых методов. Затем запускаются все методы тестирования и, наконец, метод after()
. Так что если у вас есть пять тестовых методов в классе, before()
и after()
будут запускаться только один раз каждый.
@ClassRule
применяется к статическому методу, и поэтому имеет все ограничения, присущие этому.
@Rule
заставляет тесты запускаться с помощью метода rule apply()
, который может выполнять действия до и после запуска целевого метода. Если у вас есть пять тестовых методов, правило apply()
вызывается пять раз, как обертка вокруг каждого метода.
Используйте @ClassRule
для настройки чего-либо, что может быть повторно использовано всеми методами тестирования, если вы можете добиться этого статическим методом.
Используйте @Rule
чтобы настроить что-то, что нужно создать или сбросить для каждого метода тестирования.