在Rails 4.1.1和Ruby 2.1.2上使用Guard运行Test :: Unit的问题

时间:2014-08-05 05:55:56

标签: ruby ruby-on-rails-4 guard minitest testunit

我正在使用Ruby 2.1将Rails 3.2中的应用程序从Ruby 2.0升级到Rails 4.1。

使用rake test运行我们的Test :: Unit测试完全正常,但使用guard运行测试是失败的。

 15:30:14 - INFO - Guard::Test 2.0.5 is running, with Test::Unit 2.5.5!
 15:30:14 - INFO - Running all tests
 invalid option: --use-color

 minitest options:
 >    -h, --help                       Display this help.
 >    -s, --seed SEED                  Sets random seed
 >    -v, --verbose                    Verbose. Show progress processing files.
 >    -n, --name PATTERN               Filter run on /pattern/ or string.
 Known extensions: pride
 >    -p, --pride                      Pride. Show your testing pride!

看起来正在使用Minitest而不是Test :: Unit而且this github issue确认了这一点。

我们无意使用Minitest ,但我们尝试了guard-minitest。它解决了上述问题。现在我们的测试运行但是他们都失败了:

 TypeError: no implicit conversion of nil into String

我不确定使用guard-minitest是否是解决方案。如果是,那么我需要有关TypeError的帮助。但我们希望坚持使用Test :: Unit。

Here's a gist的Gemfile.lock,test_helper.rb和Guardfile


TypeError没有堆栈跟踪,我们每次测试都会得到它,因此我无法将其跟踪到一段代码。这就是日志中发生的事情。

(0.4ms)  ALTER TABLE "spatial_ref_sys" DISABLE TRIGGER ALL;ALTER TABLE "buildings" DISABLE TRIGGER ALL;ALTER TABLE "location_names" DISABLE TRIGGER ALL;ALTER TABLE "post_boxes" DISABLE TRIGGER ALL;ALTER TABLE "regions" DISABLE TRIGGER ALL;ALTER TABLE "street_number_matches" DISABLE TRIGGER ALL;ALTER TABLE "street_numbers" DISABLE TRIGGER ALL;ALTER TABLE "territorial_authorities" DISABLE TRIGGER ALL;ALTER TABLE "unit_matches" DISABLE TRIGGER ALL;ALTER TABLE "units" DISABLE TRIGGER ALL;ALTER TABLE "schema_migrations" DISABLE TRIGGER ALL
(0.2ms)  ALTER TABLE "spatial_ref_sys" ENABLE TRIGGER ALL;ALTER TABLE "buildings" ENABLE TRIGGER ALL;ALTER TABLE "location_names" ENABLE TRIGGER ALL;ALTER TABLE "post_boxes" ENABLE TRIGGER ALL;ALTER TABLE "regions" ENABLE TRIGGER ALL;ALTER TABLE "street_number_matches" ENABLE TRIGGER ALL;ALTER TABLE "street_numbers" ENABLE TRIGGER ALL;ALTER TABLE "territorial_authorities" ENABLE TRIGGER ALL;ALTER TABLE "unit_matches" ENABLE TRIGGER ALL;ALTER TABLE "units" ENABLE TRIGGER ALL;ALTER TABLE "schema_migrations" ENABLE TRIGGER ALL

1 个答案:

答案 0 :(得分:0)

要获得堆栈跟踪,您可能必须在测试中设置详细模式,例如

TESTOPTS="--verbose" bundle exec guard

或者可能作为guard-test的选项:

guard :test, cli: '--verbose' do

或者它可能是:

guard :test, cli: '--debug' do

我不是测试单元/ Minitest专家,但是相同的选项应该适用于Minitest,或者环境变量:

VERBOSE=1 bundle exec guard

或者

DEBUG=1 bundle exec guard

或者

BACKTRACE=1 bundle exec guard