日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

junit动态忽略测试_有条件忽略测试的JUnit规则

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 junit动态忽略测试_有条件忽略测试的JUnit规则 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

junit動(dòng)態(tài)忽略測(cè)試

我一直認(rèn)為使用@Ignore停用測(cè)試是一個(gè)壞主意。 例外,這可能是一種將間歇性失敗的測(cè)試放入隔離區(qū)以供以后處理的方法(如Martin Fowler 在此處所述 )。 隨著越來(lái)越多的測(cè)試不斷被忽略和遺忘,這帶來(lái)了測(cè)試套件衰減的危險(xiǎn)。 因此,您應(yīng)該有一個(gè)政策來(lái)確保測(cè)試隔離時(shí)間不會(huì)太長(zhǎng)。 好吧,所以直到最近我才想到:

在我和Frank共同致力于的項(xiàng)目中,我們遇到了此處描述的SWT問(wèn)題。
在非Windows平臺(tái)上,斷言SWT小部件是否已獲得輸入焦點(diǎn)不適用于自動(dòng)測(cè)試。

我們決定暫時(shí)忽略非Windows平臺(tái)上與焦點(diǎn)相關(guān)的測(cè)試。 盡管我們的構(gòu)建服務(wù)器在Linux上運(yùn)行,但是我們發(fā)現(xiàn)這兩個(gè)開(kāi)發(fā)環(huán)境都在Windows上運(yùn)行,因此它足夠安全。

在JUnit中, 假設(shè)是跳過(guò)在給定條件下沒(méi)有意義的測(cè)試的方法。 這樣表示,我們的測(cè)試將如下所示:

public void testFocus() {assumeTrue( isRunningOnWindows() );// ... }

但是我們根本不希望測(cè)試代碼與條件混為一談。 決定是否忽略測(cè)試的代碼應(yīng)與測(cè)試代碼本身分開(kāi)。

這導(dǎo)致我們創(chuàng)建了ConditionalIgnore批注和相應(yīng)的規(guī)則,以將其掛鉤到JUnit運(yùn)行時(shí)中。 事情很簡(jiǎn)單,最好用一個(gè)例子來(lái)解釋:

public class SomeTest {@Rulepublic ConditionalIgnoreRule rule = new ConditionalIgnoreRule();@Test@ConditionalIgnore( condition = NotRunningOnWindows.class )public void testFocus() {// ...} }public class NotRunningOnWindows implements IgnoreCondition {public boolean isSatisfied() {return !System.getProperty( "os.name" ).startsWith( "Windows" );} }

ConditionalIgnore批注需要一個(gè)“ condition”屬性,該屬性指向?qū)崿F(xiàn)IgnoreContition的類(lèi)。 在運(yùn)行時(shí),將創(chuàng)建IgnoreCondition實(shí)現(xiàn)的實(shí)例,并且其isSatisfied()方法確定是否忽略測(cè)試(返回true)(返回false)。 最后,有一個(gè)IgnoreConditionRule,它將注釋鏈接到JUnit運(yùn)行時(shí)中。

如果IgnoreCondition實(shí)現(xiàn)決定忽略測(cè)試用例,則拋出AssumptionViolatedException。 因此,ConditionalIgnore注釋的效果與假定條件將返回false的效果相同。 略有不同,我們認(rèn)為是一個(gè)優(yōu)勢(shì):對(duì)于被忽略的測(cè)試,不會(huì)執(zhí)行@Before和@After方法。

該規(guī)則及其相關(guān)類(lèi)的源代碼可以在這里找到。

假設(shè)的另一個(gè)問(wèn)題是,它會(huì)影響測(cè)試統(tǒng)計(jì)信息。 如果發(fā)現(xiàn)Assume條件為假,則即使未運(yùn)行測(cè)試,也將其視為通過(guò)測(cè)試。 為了克服這個(gè)問(wèn)題,您必須提供自己的運(yùn)行程序,以所需的方式處理AssumptionViolatedException。

即使我剛剛寫(xiě)了關(guān)于忽略長(zhǎng)度測(cè)試的文章,但我仍然堅(jiān)信最好不要忽略測(cè)試,只有在特殊情況下才應(yīng)該忽略。

參考:來(lái)自Code Affine博客的JCG合作伙伴 Rudiger Herrmann的有條件忽略測(cè)試的JUnit規(guī)則 。

翻譯自: https://www.javacodegeeks.com/2013/11/a-junit-rule-to-conditionally-ignore-tests.html

junit動(dòng)態(tài)忽略測(cè)試

總結(jié)

以上是生活随笔為你收集整理的junit动态忽略测试_有条件忽略测试的JUnit规则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。