ruby - 将测试/单元与匿名测试用例一起使用

标签 ruby unit-testing anonymous anonymous-class

本题属于zu test-unit version 2.5.3

测试单元版本 2.5.4 解决了问题

我有一个包含许多匿名测试用例的测试。它适用于测试单元 2.5.0,但实际版本 2.5.3 会产生错误。

当我运行这个测试时:

gem 'test-unit', ">=2.5.2"
require 'test/unit'
Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end
end

没有执行任何测试,我在 testrunner.rb:361 中收到错误 undefined method sub' for nil:NilClass (NoMethodError)(我使用实际测试-单元 gem 2.5.3)。

有了 TestCase 的名字,问题就消失了:

gem 'test-unit'
require 'test/unit'
X = Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end
end

在我的实际问题中,我生成了许多测试用例。所以我有这样的情况:

gem 'test-unit'
require 'test/unit'
2.times {
  X = Class.new( Test::Unit::TestCase ) do
    def test_add
      assert_equal( 2, 1+1)
    end
  end
}

如果我执行此操作,我会收到警告 already initialized constant X 和错误: Array 与 Array 的比较失败 (ArgumentError)(在 collector.rb:48:in sort_by' 中)。

我的问题:

  • 如何避免错误?
  • 或者:如何使用动态分配的常量创建测试用例?

最佳答案

这似乎是因为 test-unit gem 的最新版本发生了变化,现在它需要一个可读的类名。

像这样的东西会起作用

gem 'test-unit', ">=2.5.2"
require 'test/unit'

Class.new( Test::Unit::TestCase ) do
  def test_add
    assert_equal( 2, 1+1)
  end

  def self.to_s
    "GeneratedClass"
  end

  def self.name
    to_s
  end
end

关于ruby - 将测试/单元与匿名测试用例一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429467/

相关文章:

node.js - 使用 MongoDB 进行单元测试查询

C#委托(delegate)编译器优化

ruby - 在 rspec 帮助程序模块中添加 `after` block

android - 在 OS X Mavericks 上安装 Calabash-Android 会导致错误

python - 编写仅测试函数是否被调用的单元测试有意义吗?

html - 如何在不影响其他div的情况下隐藏/显示匿名div

c++ - 通过引用传递匿名变量

ruby PG gem `exec_params` 与 `exec_prepared`

ruby-on-rails - rails + postgres : Using Group query on a has_many through

java - 为主要和特定口味的 android 运行单元测试