1、測(cè)試函數(shù)的構(gòu)成:
在最簡(jiǎn)單的情形下,Rust中的測(cè)試就是一個(gè)標(biāo)注有test屬性的函數(shù)。屬性 (attribute)是一種用于修飾Rust代碼的元數(shù)據(jù)。只需要將#[test]添加到關(guān)鍵字fn的上一行便可以將函數(shù)轉(zhuǎn)變?yōu)闇y(cè)試函數(shù)。當(dāng)測(cè)試編寫完成后,我們可以使用cargo test命令來(lái)運(yùn)行測(cè)試。這個(gè)命令會(huì)構(gòu)建并執(zhí)行一個(gè)用于測(cè)試的可執(zhí)行文件,該文件在執(zhí)行的過(guò)程中會(huì)逐一調(diào)用所有標(biāo)注了test屬性的函數(shù),并生成統(tǒng)計(jì)測(cè)試運(yùn)行成功或失敗的相關(guān)報(bào)告。
2、使用assert! 宏檢查結(jié)果:
assert! 宏由標(biāo)準(zhǔn)庫(kù)提供,它可以確保測(cè)試中某些條件的值為true。assert! 宏可以接收一個(gè)能夠被計(jì)算為布爾類型的值作為參數(shù)。當(dāng)這個(gè)值為true時(shí),assert! 宏什么都不用做并正常通過(guò)測(cè)試。而當(dāng)值為false時(shí),assert! 宏就會(huì)調(diào)用panic! 宏,進(jìn)而導(dǎo)致測(cè)試失敗。
3、使用assert_eq! 宏和assert_ne! 宏判斷相等性:
標(biāo)準(zhǔn)庫(kù)中專門提供了一對(duì)可以簡(jiǎn)化編程的宏 :assert_eq!
和assert_ne!
。這兩個(gè)宏分別用于比較并斷言兩個(gè)參數(shù)相等或不相等。在斷言失敗時(shí),它們還可以自動(dòng)打印出兩個(gè)參數(shù)的值,從而方便我們觀察測(cè)試失敗的原因。
4、使用should_panic檢查panic:
為測(cè)試函數(shù)添加一個(gè)額外的新屬性:should_panic
。標(biāo)記了這個(gè)屬性的測(cè)試函數(shù)會(huì)在代碼發(fā)生panic時(shí)順利通過(guò),而在代碼不發(fā)生panic時(shí)執(zhí)行失敗。
5、使用Result<T, E>編寫測(cè)試:
也可以用Result<T, E>來(lái)編寫測(cè)試!在運(yùn)行失敗時(shí)返回一個(gè)Err值而不是觸發(fā)panic。示例:
#[cfg(test)]
mod tests {
#[test]
fn it_works() -> Result<(), String> {
if 2 + 2 == 4 {
Ok(())
} else {
Err(String::from("two plus two does not equal four"))
}
}
}
6、測(cè)試的組織結(jié)構(gòu):
Rust社區(qū)主要從以下兩個(gè)分類來(lái)討論測(cè)試:單元測(cè)試(unit test)和集成測(cè)試(integration test)。單元測(cè)試小而專注,每次只單獨(dú)測(cè)試一個(gè)模塊或私有接口。而集成測(cè)試完全位于代碼庫(kù)之外,和正常從外部調(diào)用代碼庫(kù)一樣使用外部代碼,只能訪問(wèn)公共接口,并且在一次測(cè)試中可能會(huì)聯(lián)用多個(gè)模塊。
(1)、單元測(cè)試:
單元測(cè)試的目的在于將一小段代碼單獨(dú)隔離出來(lái),從而迅速地確定這段代碼的功能是否符合預(yù)期。我們一般將單元測(cè)試與需要測(cè)試的代碼存放在src
目錄下的同一文件中。同時(shí)也約定俗成地在每個(gè)源代碼文件中都新建一個(gè)tests模塊來(lái)存放測(cè)試函數(shù),并使用cfg(test)對(duì)該模塊進(jìn)行標(biāo)注。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-651333.html
(2)、集成測(cè)試:
在Rust中,集成測(cè)試是完全位于代碼庫(kù)之外的。集成測(cè)試調(diào)用庫(kù)的方式和其他的代碼調(diào)用方式?jīng)]有任何不同,這也意味著你只能調(diào)用對(duì)外公開(kāi)提供的那部分接口。集成測(cè)試的目的在于驗(yàn)證庫(kù)的不同部分能否協(xié)同起來(lái)正常工作。能夠獨(dú)立正常工作的單元代碼在集成運(yùn)行時(shí)也會(huì)發(fā)生各種問(wèn)題,所以集成測(cè)試的覆蓋率同樣是非常重要的。為了創(chuàng)建集成測(cè)試,你首先需要建立一個(gè)tests
目錄。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-651333.html
到了這里,關(guān)于Rust之編寫自動(dòng)化測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!