【问题标题】:How to implement some command before ExUnit test with some tag starts如何在带有某些标签的 ExUnit 测试开始之前执行某些命令
【发布时间】:2016-09-20 14:47:47
【问题描述】:
我有一个使用 wallaby 库的测试套件,它需要一个重量级的 webpack 构建才能使用。问题是我这个 webpack 构建太重了,例如在模型测试之前无法使用它。
所以,我决定使用这个功能:
- 用一些标签标记所有小袋鼠测试,即:
@tag :wallaby
- 检查是否存在至少一个被小袋鼠测试标记的运行测试套件
- 如果是这样,请等待构建,然后运行整个测试套件。
这是最好的设计吗?如何实现?
【问题讨论】:
标签:
elixir
phoenix-framework
ex-unit
【解决方案1】:
根据"Test Pyramid",您不应该有很多 UI 测试,并且应该很少运行它们,因为它们既慢又昂贵。
一种方法是从单元测试中排除wallaby 标签,方法是将其添加到test_helpers:
ExUnit.configure exclude: [:wallaby]
现在运行 mix test 将不会运行任何 UI 测试,直到您使用 --include 运行它:
mix test --include wallaby
这种方法比wallaby 标记之前的钩子更好,因为它是显式的,开发人员不会对长时间运行的构建和集成测试感到惊讶。
在mix.exs 中添加mix 别名可能也是个好主意,它会启动webpack 构建并运行wallaby 测试。这将是可以在 CI 中使用的单个命令。