FMc*_*FMc 8 ruby unit-testing testunit
例如,当运行这些测试时,我想确保test_fizz
始终先运行.
require 'test/unit'
class FooTest < Test::Unit::TestCase
def test_fizz
puts "Running fizz"
assert true
end
def test_bar
puts "Running bar"
assert true
end
end
Run Code Online (Sandbox Code Playgroud)
更新:我为什么要这样做?我的想法是某些测试的早期失败(那些测试更简单,更基本的方法)将使得更容易追踪系统中的问题.例如,bar
取决于fizz
正确工作的成功与否.如果fizz
坏了,我想立即知道,因为没有必要担心bar
,这也会失败,但测试结果的输出要复杂得多.
您可以使用定义测试顺序 Test::Unit::TestCase#test_order = :defined
例:
gem 'test-unit' #I used 2.5.5
require 'test/unit'
class Mytest < Test::Unit::TestCase
self.test_order = :defined
#~ self.test_order = :random
#~ self.test_order = :alphabetic #default
def test_b
p :b
end
def test_a
p :a
end
def test_c
p :c
end
end
Run Code Online (Sandbox Code Playgroud)
结果:
Loaded suite test
Started
:b
.:a
.:c
.
Finished in 0.001 seconds.
Run Code Online (Sandbox Code Playgroud)
没有test_order = :defined
你得到字母顺序:
Loaded suite test
Started
:a
.:b
.:c
.
Run Code Online (Sandbox Code Playgroud)
同一测试类中的测试按其定义的顺序调用.但是,测试类按类名按字母顺序运行.
如果你真的需要很好的控制,定义比其他前缀嘶嘶声和酒吧方法test_
一中和test_fizz_bar
法,有条件地打电话给他们,以便和运行酒吧运行时的香味的成功.
编辑:似乎不同的单元测试框架表现不同.对于Eclipse中的JUnit,似乎测试用例以随机顺序运行:在Eclipse的JUnit视图中对单元测试进行排序
使用低排序字母名称命名要首先运行的测试。
def test_AAA_fizz
Run Code Online (Sandbox Code Playgroud)
对于代码可读性来说,这可能被认为是丑陋的,也可能是有用的,具体取决于您的观点。
归档时间: |
|
查看次数: |
3228 次 |
最近记录: |