喜歡的話別忘了點贊、收藏加關注哦(加關注即可閱讀全文),對接下來的教程有興趣的可以關注專欄。謝謝喵!(=・ω・=)
11.5.1. 測試函數返回值為Result
枚舉
到目前為止,測試運行失敗的原因都是因為觸發了panic
,但可以導致測試失敗的方式也不止它。
使用Result
枚舉的測試函數也比較好寫,只需要接收被測試函數的返回值,符合期待的就返回Ok
變體,反之就返回Err
變體,又因為枚舉類型允許變體附帶數據,所以還可以在Err
上附帶一些錯誤信息來更好的詞幫助糾錯。
如果是Ok
,就代表測試通過;反之就是失敗。
看個例子:
#[test]fn it_works() -> Result<(), String> {let result = add(2, 2);if result == 4 {Ok(())} else {Err(String::from("two plus two does not equal four"))}}
it_works
函數有Result<(), String>
返回類型。當測試通過時為Ok(())
,當測試失敗時為Err
,其中包含一個帶報錯信息的String
類型 。
這個測試肯定是通過的。
使用Result
枚舉來測試有一個注意,就是不要在使用Result<T, E>
編寫的測試上使用should_panic
屬性(這個屬性在上一篇文章中有講),因為使用Result<T, E>
編寫的測試會返回Err
而不是直接觸發恐慌。