parallel_tests测试失败,使用rspec --only-failures运行

时间:2017-04-19 23:59:16

标签: ruby-on-rails rspec parallel-testing

我在我的rails项目上运行parallel_tests gem,输出失败的测试进入文件tmp / failing_specs.log。问题是此文件的输出格式不正确,无法与'rspec --only-failures'一起使用。

parallel_test输出文件在我的.rspec_parallel文件中定义;

--format progress
--format ParallelTests::RSpec::SummaryLogger --out tmp/spec_summary.log
--format ParallelTests::RSpec::FailuresLogger --out tmp/failing_specs.log

failing_specs.log文件的输出是这样的

Failures:

  1) Create a new debtor, shows the client after creation
     [31mFailure/Error:[0m
     [31m  [0mwithin [31m[1;31m"[0m[31m#phones-input-list[1;31m"[0m[31m[0m [32mdo[0m[0m
     [31m    [0mexpect(page).to have_selector([31m[1;31m"[0m[31mli#phone1[1;31m"[0m[31m[0m, [35mvisible[0m: [1;36mtrue[0m)[0m
     [31m  [0m[32mend[0m[0m
     [31m[0m
     [31mCapybara::ElementNotFound:[0m
     [31m  Unable to find css "#phones-input-list"[0m
     [36m# ./spec/integration/debtors/create_debtor_spec.rb:63:in `block (3 levels) in <top (required)>'[0m
     [36m# ./spec/integration/debtors/create_debtor_spec.rb:59:in `block (2 levels) in <top (required)>'[0m

rspec --only-failures预期的输出看起来像这样;

example_id                                                                  | status  | run_time        |
--------------------------------------------------------------------------- | ------- | --------------- |
./spec/controllers/accounts_controller_spec.rb[1:1:1:1:1:1]                 | unknown |                 |
./spec/controllers/accounts_controller_spec.rb[1:1:1:1:1:2]                 | unknown |                 |

如何让这两者很好地协同工作?

1 个答案:

答案 0 :(得分:0)

因为parallel_tests产生了单独的rspec进程,所以这些进程中的每个进程都会写入同一文件,这可能会导致冲突。

这就是为什么有那些ParallelTests::RSpec::[xxx]Logger类的原因。 我想对于这种情况有必要有一个特定的实现。 我已经打开一个问题: https://github.com/grosser/parallel_tests/issues/699

同时,我认为使用https://github.com/NoRedInk/rspec-retry是最好的解决方案。