3.4 常用的测试
3.4 常用的測試
ZIO測試的另一個(gè)不錯(cuò)的特性是test aspects。 test
aspects修改了測試執(zhí)行方式的某些方面。 例如,test
aspects可以在指定的持續(xù)時(shí)間之后使測試超時(shí),或者運(yùn)行指定次數(shù)的測試以確保它不易碎。
我們通過使用spec @@ Aspect語法來應(yīng)用測試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,但是當(dāng)我們測試并發(fā)程序時(shí),這些并發(fā)程序可能會遇到較弱的競爭條件或死鎖,這可能非常有用.將直到生產(chǎn)中才出現(xiàn)的罕見錯(cuò)誤轉(zhuǎn)變?yōu)榭梢栽\斷和調(diào)試的一致測試失敗。
我們可以使用其他各種測試aspect。例如,我們可以使用具有指定持續(xù)時(shí)間的超時(shí)來使比該持續(xù)時(shí)間更長的測試超時(shí),或者可以使用失敗指定我們期望測試失敗。
由于測試本身就是ZIO效果,因此使測試超時(shí)實(shí)際上會中斷測試,從而確保沒有做任何不必要的工作,并且適當(dāng)釋放了與測試相關(guān)的任何資源。
測試方面的一個(gè)特別出色的功能是,您可以將它們應(yīng)用于單個(gè)測試或整個(gè)suite,并修改套件中的所有測試。因此,如果要對suite中的每個(gè)測試應(yīng)用超時(shí),只需在suite上調(diào)用超時(shí)即可。
有很多不同的測試aspect可以修改測試的執(zhí)行方式,例如僅在特定平臺或Scala版本上運(yùn)行測試。因此,如果您確實(shí)需要修改測試執(zhí)行方式,則值得檢查是否已經(jīng)有測試aspect。
總結(jié)
- 上一篇: 小红书推广效果怎么样?如何进行小红书推广
- 下一篇: 一键重装系统win8图文教程