Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Jenkins和TEST的Rails:单元太慢_Ruby On Rails 3_Jenkins - Fatal编程技术网

Ruby on rails 3 Jenkins和TEST的Rails:单元太慢

Ruby on rails 3 Jenkins和TEST的Rails:单元太慢,ruby-on-rails-3,jenkins,Ruby On Rails 3,Jenkins,我有一个Rails 3应用程序,它有大约2000个测试和大约4000个断言 使用Test::Unit、Mocha和Shoulda进行“正常”单元和功能测试。一切正常,运行所有测试只需不到5分钟 我设置了一个Jenkins实例来运行测试,一切正常,但是如果有任何失败,构建仍然是成功的,并且没有触发任何失败触发器 我读到我需要将测试结果发布为JUnit测试结果,这意味着将它们转换为XML。我添加了gem'ci_reporter',并更改了Jenkins中的命令以从运行测试 bundle exec r

我有一个Rails 3应用程序,它有大约2000个测试和大约4000个断言

使用Test::Unit、Mocha和Shoulda进行“正常”单元和功能测试。一切正常,运行所有测试只需不到5分钟

我设置了一个Jenkins实例来运行测试,一切正常,但是如果有任何失败,构建仍然是成功的,并且没有触发任何失败触发器

我读到我需要将测试结果发布为JUnit测试结果,这意味着将它们转换为XML。我添加了gem'ci_reporter',并更改了Jenkins中的命令以从运行测试

bundle exec rake test

所有的工作,我已经建立了标记为失败,如果一些测试失败,但运行所有的测试现在需要3小时40分钟。我不能那样做


我可以做些什么来更快地将输出转换为xml吗?为什么仅仅将一些XML放入一个文件夹就可以在不到5分钟到将近4小时之间产生如此巨大的差异?

我没有找到一种方法让它在合理的时间内运行ci:setup:test,所以我使用了另一种解决方案。这是我的Jenkins作业配置:

#!/bin/bash -e
source ~/.bashrc
rvm use 2.1.1
rvm gemset use my_gemset
cd project_path
export RAILS_ENV=test
bundle install 
[ -d "coverage" ] && rm -rf coverage
mkdir coverage
#bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:schema:load
bundle exec rake assets:precompile
T1=`bundle exec rake test`
T2=3
echo "$T1"
T3=`echo "$T1" |  grep -c '\([[:space:]]0[[:space:]]\)failures,\1errors'`
echo "-----------------------------------------------------------------------"
echo " __________ "
echo "|          |"
echo "| Summary: |"
echo "|__________|"
echo "            "
echo "-----------------------------------------------------------------------"
echo "$T1" | grep -E '[[:space:]][[:digit:]]{0,4}[[:space:]]failures,[[:space:]][[:digit:]]{0,4}[[:space:]]errors'
echo "-----------------------------------------------------------------------"
if [ "$T3" = "$T2" ]; then echo "SUCCESS - All tests passed"; else exit -1; fi

基本上,我正在搜索失败/错误,并将构建标记为失败(如果有)。另外,在后期构建中,我有一项工作,可以发送带有控制台输出的电子邮件。这并不理想,但它可以工作,而且速度很快

我没有答案,只是猜测:我在工作中使用Python和NoTest,我遇到了一个类似的问题:使用xml输出会阻止并行运行测试,当然会减慢速度。FWIW,我注意到ci_reporter_minitest也有同样的问题,我不知道为什么。
#!/bin/bash -e
source ~/.bashrc
rvm use 2.1.1
rvm gemset use my_gemset
cd project_path
export RAILS_ENV=test
bundle install 
[ -d "coverage" ] && rm -rf coverage
mkdir coverage
#bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:schema:load
bundle exec rake assets:precompile
T1=`bundle exec rake test`
T2=3
echo "$T1"
T3=`echo "$T1" |  grep -c '\([[:space:]]0[[:space:]]\)failures,\1errors'`
echo "-----------------------------------------------------------------------"
echo " __________ "
echo "|          |"
echo "| Summary: |"
echo "|__________|"
echo "            "
echo "-----------------------------------------------------------------------"
echo "$T1" | grep -E '[[:space:]][[:digit:]]{0,4}[[:space:]]failures,[[:space:]][[:digit:]]{0,4}[[:space:]]errors'
echo "-----------------------------------------------------------------------"
if [ "$T3" = "$T2" ]; then echo "SUCCESS - All tests passed"; else exit -1; fi