与Jenkins和TEST的Rails:单位太慢了

时间:2014-06-10 14:27:10

标签: ruby-on-rails-3 jenkins

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

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

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

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

运行测试
bundle exec rake test

bundle exec rake ci:setup:testunit test

所有工作,如果某些测试失败,我的构建标记为失败,但运行所有测试现在需要3小时40分钟。我无法解决这个问题。

我能做些什么来让输出更快地转换为xml?为什么只是将一些XML放入文件夹中,从不到5分钟到近4个小时的巨大差异呢?

1 个答案:

答案 0 :(得分:0)

我没有找到一种方法让它在合理的时间内运行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

基本上我正在考虑失败/错误并将构建标记为失败(如果有的话)。此外,在后期构建中,我有一个工作,发送附加控制台输出的电子邮件。它并不理想,但它很有效,而且很快