如何使用圆圈CI运行多个rspec测试文件?
当我在spec / features / main中进行一次测试时,它运行正常。
但是,如果我有另一个规格,它们会在本地传递但在circleCI中我会得到
bundler: failed to load command: rspec (/home/circleci/repo/vendor/bundle/ruby/2.4.0/bin/rspec)
即使我使用“在ci规范中工作”并将其复制为不同的文件名但保持内容相同,也会发生这种情况。当我这样做时,它在circleCI中失败并带有上述消息
我测试的所有内容都表明问题与多个文件有关,而不是上面测试显示的实际内容。
文件的顶部(如果只有文件,则有效)是:
require 'yaml'
require 'spec_helper'
require_relative '../../support/page_object'
require_relative '../../support/sleep_lengths'
require_relative '../../support/sleepers'
我的require_relative
在某种程度上弄乱了第二个文件吗?
Circle使用以下命令查找文件:
#!/bin/bash -eo pipefail
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
bundle exec rspec --format progress \
--out /tmp/test-results/rspec.xml \
--format progress \
"${TEST_FILES}"
答案 0 :(得分:1)
这里可能会发生两(2)件事情:
“$ {TEST_FILES}”没有给出正确的替换,因此使整个bundle exec rspec
命令失败。您可以在bundle exec rspec
命令
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
如果尚未运行任何成功的测试套件,按时间分割可能会有问题。以下是我从circle ci docs中提取的内容:
时间分割类型使用历史时序数据来加权 分裂。 CircleCI自动生成之前的定时数据 在默认位置的容器内可用的成功运行 所以CLI工具可以发现它们 ($ CIRCLE_INTERNAL_TASK_DATA /圆测试结果)。
所以也许你应该尝试按文件名分割,这是默认的或任何其他更明确的选项,如filesize而不是时间。这样的事情可能会有所帮助:
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split)"