3.1 使用ZIO测试,写一些简单的程序
3.1 使用ZIO測試,寫一些簡單的程序
解決方案是ZIO Test,它是一個將effect視為第一類值并利用ZIO的全部功能的測試庫。
要開始使用ZIO測試,請首先將其添加為依賴項。
在這里,我們可以通過擴展DefaultRunnableSpec并實現其spec方法。
import zio.test._import zio.test.Assertion._object ExampleSpec extends DefaultRunnableSpec {def spec = suite("ExampleSpec")(test("addition works") {assert(1 + 1)(equalTo(2))})}到目前為止,這看起來與其他測試框架沒有什么不同。每個測試集合都表示為一個spec,可以是一個測試,也可以是包含一個或多個其他spec的suite。
這樣,spec就是一棵像樹一樣的數據結構,可以支持任意級別的suite和test,從而為組織測試提供了極大的靈活性。
我們使用assert操作編寫測試,該運算符首先獲取一個要聲明的值,然后取一個我們希望對該值保留的聲明。
在這里,我們使用簡單的equalTo斷言,該斷言只是期望值等于equalTo的參數,但是正如我們將在下一節中看到的那樣,我們可以使用各種其他斷言來表達更復雜的期望。
讓我們看看如何測試ZIO.succeed是否成功獲得了我們之前努力的期望值。
不知道你是否發現了其中的不同?
除了用ZIO.succeed(1+1)替換1+1外,我們所做的唯一更改是用testM替換了test并用assertM斷言了。
用testM替換test將告訴測試框架該測試將返回ZIO效果。測試框架將自動運行test以及spec中的所有其他測試,并以跨平臺一致的方式報告結果。
類似地,用assertM替換assert表示該斷言的左側將是ZIO
effect,并且測試框架應在左側運行并將其結果與右側的期望進行比較。assertM在這里并沒有什么神奇的。
實際上,我們可以使用map或for理解將assertM替換為assert。
編寫此測試的所有三種方式都是等效的。通常,我們發現在整個測試適合時,單行測試,使用assertM最具可讀性.其他的用for推導比較合適。
您可以選擇適合自己的樣式。您也可以使用&&和||使用邏輯與邏輯或,或使用組合多個assert語句否定斷言。
總結
以上是生活随笔為你收集整理的3.1 使用ZIO测试,写一些简单的程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openCV+VS2010结合+正确运行
- 下一篇: 不懂就问,苹果电脑格式化了能恢复数据吗?