使用ruby Unit测试为多个实例运行相同的测试集

时间:2012-09-28 21:42:08

标签: ruby testunit

我想在初始化中运行一组带有两个不同参数的测试。 我现在正在做的是:

require 'rubygems'
gem 'test-unit'
require 'test/unit'
require 'calc'

class My_test < Test::Unit::TestCase
  class << self
    def startup
      $obj = Calc.new("test1")
    end
  end

  def test_1
    #testing $obj method 1
  end

  def test_2
    #testing $obj method 2
  end
  .
  .
  .
end

现在我想执行所有测试test_1 ... test_n用不同的参数说'test2',Calc.new(“test2”)。

最好的方法是什么?任何建议。 我正在使用gem test-unit 2.5.x

1 个答案:

答案 0 :(得分:1)

您可以将test_1 ...放在模块中并创建2个测试类。

示例(一个测试成功,第二个测试错误):

require 'rubygems'
gem 'test-unit'
require 'test/unit'
#~ require 'calc'

module My_tests
  def test_1
    assert_equal( 2, 2*@@obj)
  end
end

class My_test1 < Test::Unit::TestCase
  class << self
    def startup
      @@obj = 1 #Calc.new("test1")
    end
  end
  include My_tests
end

class My_test2 < Test::Unit::TestCase
  class << self
    def startup
      @@obj = 2 #Calc.new("test1")
    end
  end
  include My_tests
end

我没有使用全局变量($obj),而是使用了类属性(@@obj)。

也许你应该更好地使用setup

require 'rubygems'
gem 'test-unit'
require 'test/unit'
#~ require 'calc'

module My_tests
  def test_1
    assert_equal( 2, 2*@obj)
  end
end

class My_test1 < Test::Unit::TestCase
  def setup
    @obj = 1 #Calc.new("test1")
  end
  include My_tests
end

class My_test2 < Test::Unit::TestCase
  def setup
    @obj = 2 #Calc.new("test1")
  end
  include My_tests
end