ruby-on-rails 如何使用Test::Unit跳过某些测试

dgsult0t  于 2022-11-19  发布在  Ruby
关注(0)|答案(3)|浏览(198)

在我的一个项目中,我需要与几个后端系统协作。其中一些系统缺少文档,部分原因是我有一些测试代码与一些测试服务器交互,只是为了看看一切都按预期工作。然而,访问这些服务器非常慢,因此我不想每次运行我的测试套件时都运行这些测试。
我的问题是如何处理你想跳过某些测试的情况。目前我使用一个环境变量'BACKEND_TEST'和一个条件语句来检查是否为我想跳过的每个测试设置了该变量。但有时我想跳过测试文件中的所有测试,而不必在每个测试的开头添加额外的行。
需要与测试服务器交互的测试并不多,因为我在其他情况下使用了flexmock。
从这个问题的标题可以看出,我使用的是Test::Unit。另外,如果有什么区别的话,这个项目是Rails项目。

yquaqz18

yquaqz181#

上一个答案中提到的功能包括omit()方法和omit_if()

def test_omission
  omit('Reason')
  # Not reached here
end

还有

def test_omission
  omit_if("".empty?)
  # Not reached here
end

来自:http://test-unit.rubyforge.org/test-unit/en/Test/Unit/TestCaseOmissionSupport.html#omit-instance_method

5t7ly7z5

5t7ly7z52#

New Features Of Test Unit 2.x建议test-unit 2.x(gem版本,而不是ruby 1.8标准库)允许省略测试。

bxjv4tth

bxjv4tth3#

我被以下内容搞糊涂了,它仍然会向控制台引发错误:

def test_omission
  omit('Reason')
  # Not reached here
end

您可以通过将要跳过的代码 Package 在传递给omit的块中来避免这种情况:

def test_omission
  omit 'Reason' do
    # Not reached here
  end
end

这实际上如预期的那样跳过了测试,并输出“忽略:测试原因”到控制台。不幸的是,你必须缩进现有的代码,使这项工作,我很乐意学习一个更好的方法来做到这一点,但这是工作。

相关问题