常用的测试"/>
3.4 常用的测试
3.4 常用的测试
ZIO测试的另一个不错的特性是test aspects。 test
aspects修改了测试执行方式的某些方面。 例如,test
aspects可以在指定的持续时间之后使测试超时,或者运行指定次数的测试以确保它不易碎。
我们通过使用spec @@ Aspect语法来应用测试aspects,如下所示:
import zio.test.TestAspect._object ExampleSpec extends DefaultRunnableSpec {def spec = suite("ExampleSpec")(testM("this test will be repeated to ensure it is stable") {assertM(ZIO.succeed(1 + 1))(equalTo(2))} @@ nonFlaky)}
在这种情况下,除非我们有某些理由特别怀疑ZIO.succeed,否则可能不需要使用nonFlaky,但是当我们测试并发程序时,这些并发程序可能会遇到较弱的竞争条件或死锁,这可能非常有用.将直到生产中才出现的罕见错误转变为可以诊断和调试的一致测试失败。
我们可以使用其他各种测试aspect。例如,我们可以使用具有指定持续时间的超时来使比该持续时间更长的测试超时,或者可以使用失败指定我们期望测试失败。
由于测试本身就是ZIO效果,因此使测试超时实际上会中断测试,从而确保没有做任何不必要的工作,并且适当释放了与测试相关的任何资源。
测试方面的一个特别出色的功能是,您可以将它们应用于单个测试或整个suite,并修改套件中的所有测试。因此,如果要对suite中的每个测试应用超时,只需在suite上调用超时即可。
有很多不同的测试aspect可以修改测试的执行方式,例如仅在特定平台或Scala版本上运行测试。因此,如果您确实需要修改测试执行方式,则值得检查是否已经有测试aspect。
更多推荐
3.4 常用的测试
发布评论