在我使用test :: unit的测试应用程序中,我需要从各种来源提取大量数据。我只想这样做 - 数据只能读取,不能写入,并且在测试之间不会改变,加载(以及加载的错误检查)需要一些时间。使用Test :: Unit,我如何在所有测试(但不是每个测试)之前运行一段代码?
有些值我每次都想重置,而且这些值很容易,但是如果我想要持久的可访问值,该怎么办?什么是最好的方法来做到这一点?
我特别感兴趣的解决方案,可以让我将这些分配推送到可以包含在我的所有测试中的某个模块,因为他们都需要访问这些数据。
在我使用test :: unit的测试应用程序中,我需要从各种来源提取大量数据。我只想这样做 - 数据只能读取,不能写入,并且在测试之间不会改变,加载(以及加载的错误检查)需要一些时间。使用Test :: Unit,我如何在所有测试(但不是每个测试)之前运行一段代码?
有些值我每次都想重置,而且这些值很容易,但是如果我想要持久的可访问值,该怎么办?什么是最好的方法来做到这一点?
我特别感兴趣的解决方案,可以让我将这些分配推送到可以包含在我的所有测试中的某个模块,因为他们都需要访问这些数据。
为什么你需要它的测试里面?你可以定义它gloabl:
gem 'test-unit'#, '>= 2.1.1' #startup
require 'test/unit'
GLOBAL_DATA = 11
class My_Tests < Test::Unit::TestCase
def test_1()
puts "Testing startup 1"
assert_equal(11, GLOBAL_DATA)
end
end
GLOBAL_DATA可能是一个(单身)类(相应的实例)。
如果你只有一个TestClass中,你可以使用TestCase.startup:
gem 'test-unit'#, '>= 2.1.1' #startup
require 'test/unit'
class My_Tests < Test::Unit::TestCase
def self.startup
puts "Define global_data "
@@global_data = 11
end
def test_1()
puts "Testing 1"
assert_equal(11, @@global_data = 11)
end
def test_2()
puts "Testing 2"
assert_equal(11, @@global_data = 11)
end
end
您可以将它们放在课程的顶部。他们会被执行,然后你的测试会被执行。
你可以在设置方法做到这一点:
def setup
if !defined?(@@initial_data)
# Whatever you need to do to get your initial data
@@initial_data = foo
end
@other_data = bar
end
非常类似的问题,除了OP希望一个测试套件之前运行一些代码,不是所有的测试套件之前: http://stackoverflow.com/questions/255969/in-rubys-testunittestcase-how-do-i-override-the-initialize-method –