2

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

我找不到关于这种情况的任何信息,详细或跟踪选项不能帮助我找出我的测试套件被破坏的地方。

有人知道我能做些什么来解决这个问题吗?

4

1 回答 1

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的是有问题的那个。

您还可以将setupand添加teardown到每个 TestCase (但如果您有自己的定义 ot setup/teardown 它们将不包含测试代码)。

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

不要忘记删除代码 - 这只是为了确定您的问题可能出在哪里。

于 2012-10-18T19:22:05.027 回答