Scalatest是否支持假设?

And*_*yle 5 unit-testing scala scalatest

根据标题,我想知道在定义特定测试用例时是否可以向Scalatest提供"假设".在此上下文中的假设将是测试的先决条件,使得如果假设被评估为假,则将跳过测试而不是执行测试(并且由跑步者相应地处理).

在这种特殊情况下,我正在考虑测试之间的依赖关系 - 因此可能存在一个基本测试,用于验证方法是否返回任何内容,然后是后来的测试,这些测试会深入研究响应的细节.如果前一个测试失败了,我宁愿让后一个测试以某种方式标记为"不可运行",而不是让它们失败.

这就是说我可以想象将来使用它来定义一些未连接的前提条件(例如硬盘必须至少有20MB的空间空闲),所以如果有一种通用的方式在运行时跳过测试(而不是使用ignorepending)我我宁愿听到这个.

欢迎使用专门的语法,但是如果我必须手动抛出某种类型的异常也是如此.

MHa*_*ris 5

ScalaTest 2.0(我认为)增加了对假设的支持:

Trait Assertions还提供了允许您取消测试的方法.如果测试所需的资源不可用,您将取消测试.例如,如果测试需要外部数据库在线,而不是,则可以取消测试以指示由于缺少数据库而无法运行.这样的测试假定数据库可用,您可以使用assume方法在测试开始时指示这个,如下所示:

assume(database.isAvailable)
Run Code Online (Sandbox Code Playgroud)

http://www.scalatest.org/user_guide/using_assertions