我正在使用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
答案 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