代码之家  ›  专栏  ›  技术社区  ›  Andrew

Ruby测试:块与方法

  •  3
  • Andrew  · 技术社区  · 15 年前

    当我为Rails应用程序编写测试套件时,我注意到有两种不同的方法来创建测试,一种是 test 块和常规方法:

    test "the truth" do
      assert true
    end
    

    VS

    def test_for_something_else
      assert true
    end
    

    两个测试结构之间有什么区别吗?我什么时候应该用一个而不是另一个?

    编辑: 在进一步检查时,作为方法编写的测试将计入 rake:stats 而那些用 测试 语法不是。有一个区别

    3 回复  |  直到 12 年前
        1
  •  4
  •   John Topley    15 年前

    我认为块语法是由于行为驱动的开发框架(如rspec)的流行而增加的,它们更自然 应该做X.… 语法。最后,这是个人喜好的问题。

        2
  •  1
  •   liwp    15 年前

    我希望从技术上讲这两者没有区别。前者允许您使用一个字符串来描述您的测试,而后者则需要使用一个描述性的方法名,这种方法名有时很长,很难阅读[1]。由于这种差异,我个人更喜欢前者,但归根结底,这取决于个人/项目偏好。

    〔1〕 "add two interleaving timers that trigger in the opposite order" VS test_addTwoInterleavingTimersThatTriggerInTheOppositeOrder(...)

        3
  •  0
  •   Tim Fletcher    12 年前

    我发现的一个区别/烦恼是vim中有ctags和标签列表插件。如果测试不是作为函数编写的,则无法使用 :TlistToggle 命令。如果在一个文件中有很多测试,这会使快速导航变得更加困难。