Scala规范中SUS和子示例的用途是什么?

时间:2011-05-03 09:43:32

标签: unit-testing scala specs

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

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

我的用例

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

我应该将什么变成 SUS 以及子示例中的内容?

1 个答案:

答案 0 :(得分:1)

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

然后, specs 中的SUS和普通示例/子示例之间的主要区别在于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取代了,所以如果您刚刚开始编写规范,可能需要检查一下。< / p>

如果您愿意,请务必在mailing-list上使用代码示例提出更具体的问题。

埃里克。