【问题标题】:What is the intended use of SUS and sub-examples in Specs for Scala?SUS 和 Specs for Scala 中的子示例的预期用途是什么?
【发布时间】:2011-05-03 09:43:31
【问题描述】:

Specs 提供了两种不同的分层结构规范的方法。一种是通过定义“规范下的系统”,另一种是通过制作子示例(一个示例是一个规范/测试语句)。

有人可以回答或指向一个网站,这些不同机制的一般预期用途是什么?我也对规范/示例的重用感到好奇。

我的用例

特别是我有一个项目,其中包含不同的算法 A 来计算给定特定输入示例 Y 的输出 X。我应该选择算法 A 作为 SUS,以便我可以重用像“必须计算正确的结果,例如 Y_1;必须计算正确的结果,例如 Y_2;...”这样的设置?或者我应该将不同的示例指定为 SUS,以便我得到“必须可以通过算法 A_1 解决;必须可以通过算法 A_2 解决;...”?

我应该把什么变成SUS,什么变成子例子?

【问题讨论】:

    标签: unit-testing scala specs


    【解决方案1】:

    通常,规范下的系统 (SUS) 是您指定的代码,而不是数据。

    那么,SUS 和 specs 中的普通示例/子示例之间的主要区别在于,SUS 有几种额外的方法来设置上下文,例如->- method.

    在您的情况下,我实际上建议的是,如果每种算法的数据实际上相同,只需定义一种方法来创建您的示例:

    def examplesMustPassFor(algo: Algorithm) = {
      "The algo "+algo.name should {
        "pass the data set 1" in { ... }
        "pass the data set 2" in { ... }
        "pass the data set 3" in { ... }
      }
    }
    
    examplesMustPassFor(algo1)
    examplesMustPassFor(algo2)
    examplesMustPassFor(algo3)
    

    我要提到的另一点重要的一点是,specs 项目现在已被 specs2 取代,因此如果您刚刚开始编写规范,您可能需要查看此项目。

    当然,如果您愿意,可以随时通过 mailing-list 上的代码示例提出更具体的问题。

    埃里克。

    【讨论】:

    • 按照您的建议指定方法是我在提出问题后所做的。我面临的一个问题是我的算法的对象在创建时收到了问题实例。所以我必须将一个将问题映射到 AlgorithmForProblem 的函数传递到指定示例的函数中。好吧,在 Scala 中这不是什么大问题……
    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2013-12-10
    • 2011-10-20
    • 2011-07-21
    相关资源
    最近更新 更多