Запуск одного и того же набора тестов для нескольких экземпляров с использованием ruby Unit test
Я хочу запустить набор тестов с двумя разными аргументами при инициализации. что я делаю сейчас:
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 ответ
Решение
Вы можете поместить 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