在几个项目中使用RSpec之后,我给了minitest / unit。到目前为止我喜欢它,但我错过了使用describe / context块以逻辑方式对我的测试/规范进行分组。
我知道minitest / spec提供了这个功能,但我喜欢minitest / unit感觉更接近准系统Ruby。
是否有任何宝石为minitest / unit提供描述/上下文支持?或者,我是否应该使用minitest / unit中长而无组织的测试文件?
答案 0 :(得分:43)
我知道来自RSpec的几个人最狡猾地讨论同样的问题。他们喜欢使用describe / context块嵌套的能力,并希望继续使用minitest。有几种解决方案:
context
块。但是你可以轻松地在其位置使用describe
,一切都按照你的预期运作。以下是我的测试文件的组织方式示例:
test/
models/
user/
authentication_test.rb
email_test.rb
reservation_test.rb
user_test.rb
username_test.rb
无论我使用规范DSL还是xUnit样式,我都使用此结构。当使用规范DSL时,我在我的描述块中指定我正在测试的内容,如下所示:
require "minitest_helper"
describe User, :authentications do
before do
# ...
答案 1 :(得分:15)
您还可以将多个类放入一个测试文件中:
module PizzaTest
class Isolation < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
pizzas('one-with-everything').awesome?
end
end
end
甚至嵌套测试类:
class PizzaTest < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
assert pizzas('one-with-everything').awesome?
end
end
end
答案 2 :(得分:11)
我更喜欢这种方式(只是一点点),但我认为更容易理解:
class ConventionalNameTest < ActiveSupport::TestCase
class ContextTest < ConventionalNameTest
# so much stuff...
end
class AnotherContextTest < ConventionalNameTest
# and some more...
end
答案 3 :(得分:1)
要以先前的答案为基础,我更喜欢这个稍微冗长的选项:
OpenGLWidget