如何找到导致rake测试任务终止的文件/测试?

时间:2012-04-02 16:40:32

标签: ruby-on-rails testing rake rake-task rake-test

我正在使用rake任务来运行我的应用程序的测试套件 我可以看到,当我启动任务时,它运行命令

ruby -I"lib:test" -I"[...]/lib" "[...]/lib/rake/rake_test_loader.rb" "vendor/plugins/shop/test/**/*_test.rb"

其中[...]是我的gemset中rake gem的路径。

当我运行任务时,我收到了一些警告和一些.,这意味着一些测试通过,但我最终得到terminated

日志示例:

...................................... 7431 Terminated

请注意,7431是PID。

我找不到有关此案例的任何信息,详细或跟踪选项无法帮助我弄清楚我的测试套件在哪里坏了。

有人知道我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不知道,什么过程会创建“终止”消息,但您可以尝试以下操作:

添加

def setup
  puts "Start test #{self.__name__}"
  STDOUT.flush
end
def teardown
  puts "Finished test #{self.__name__}"
  STDOUT.flush
end

进行所有测试。

示例:

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

结果

Loaded suite test
Started
.>Exit code: 1

测试停止,你看不到哪里。我希望这与你的“终止”消息类似。

现在添加一些代码:

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

这导致:

Loaded suite test
Started
Start test test_1
Finished test test_1
.Start test test_2
Finished test test_2

最后提到的test_2是有问题的那个。

您也可以将setupteardown添加到每个TestCase中(但如果您有自己的定义,则设置/拆除它们将不包含测试代码)。

require 'test/unit'

class Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
end

不要忘记删除代码 - 只是找出问题所在。