我正在使用具有更多测试覆盖率的传统 ROR 应用程序,因此在我们的信号量 CI 中执行所有rspec_cucumber需要大约 1:30 小时。 所以我们实现了[Parallel_test][1]
[1]:https://github.com/grosser/parallel_tests。Gem 和很多时候某些功能规范或方案仅在 CI 环境中失败。当我们在本地和信号量SSH环境中重新运行相同的测试用例时,相同的规范通过了。
CI 环境日志中最常见的错误是Capybara::ElementNotFound:
很难确定问题的根本原因。对此有什么线索吗?
尝试在没有并行测试 gem 的情况下在 CI 上运行,然后让 CI 平台进行并行化。
也许这会对 https://semaphoreci.com/docs/running-cucumber-scenarios-in-threads.html 有所帮助。
我很确定信号量支持使用 rspec 进行并行测试。
还可以尝试通过并行测试在本地运行整个套件,看看是否遇到相同的问题。
最后在命令行上查看cucumber --help
.您可以使用许多选项执行以下操作
- 向运行添加更多调试信息
- 确定最慢的方案(也许您可以标记这些方案并减少运行它们的频率)。
我在使用Capybara时遇到了类似的问题,parallel_tests
我发现同时运行的测试越多,您在Circle CI中开始遇到的"奇怪"问题就越多。也就是说,即使 Circle CI 中的芯片(至少在我们的容器中)有 18 个内核。我使用 -n 4
标志将同时测试的数量限制为仅 4 个。
因此,在我的 Ci 配置中,我使用: bundle exec parallel_rspec ~/repo/spec -n 4