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