Как реализовать какую-либо команду до запуска теста ExUnit с некоторым тегом
У меня есть набор тестов, который использует wallaby
библиотека, которая нуждается в тяжелой сборке webpack для использования. Проблема в том, что эта сборка веб-пакета слишком тяжелая, чтобы использовать ее, например, перед тестированием только модели.
Итак, я решил об этой функции:
- Пометьте все тесты валлаби каким-либо тегом, а именно:
@tag :wallaby
- Проверьте, существует ли хотя бы один тег, отмеченный тестом wallaby, для запуска набора тестов.
- Если это так, дождитесь сборки, а затем запустите весь набор тестов.
Это лучший дизайн? Как я могу это реализовать?
1 ответ
Согласно "Тестовой пирамиде" у вас не должно быть много тестов пользовательского интерфейса, и вы должны запускать их редко, потому что они медленные и дорогие.
Одним из подходов будет исключение wallaby
тег из ваших модульных тестов, добавив это к вашему test_helpers
:
ExUnit.configure exclude: [:wallaby]
Сейчас работает mix test
не будет запускать никаких тестов пользовательского интерфейса, пока вы не запустите его с --include
:
mix test --include wallaby
Этот подход лучше, чем хук раньше wallaby
тег, потому что он явный, и разработчик не будет удивлен длительными тестами сборки и интеграции.
Также было бы неплохо добавить псевдоним смешивания в mix.exs
который запускает сборку веб-пакета и запускает тест wallaby. Это будет одна команда, которую можно использовать в CI.