<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    上善若水
    In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
    posts - 146,comments - 147,trackbacks - 0
    說(shuō)來(lái)慚愧,雖然之前已經(jīng)看過(guò)JUnit的源碼了,也寫(xiě)了幾篇博客,但是長(zhǎng)時(shí)間不寫(xiě)Test Case,今天想要寫(xiě)拋Exception相關(guān)的test case時(shí),竟然不知道怎么寫(xiě)了。。。。。好記性不如爛筆頭,記下來(lái)先~~

    對(duì)于使用驗(yàn)證Test Case方法中拋出的異常,我起初想到的是一種比較簡(jiǎn)單的方法,但是顯得比較繁瑣:
        @Test
        
    public void testOldStyle() {
            
    try {
                
    double value = Math.random();
                
    if(value < 0.5{
                    
    throw new IllegalStateException("test");
                }

                Assert.fail(
    "Expect IllegalStateException");
            }
     catch(IllegalStateException e) {
            }

        }

    Google了一下,找到另外幾種更加方便的方法:1,使用Test注解中的expected字段判斷拋出異常的類型。2,使用ExpectedException的Rule注解。
    個(gè)人偏好用Test注解中的expected字段,它先的更加簡(jiǎn)潔,不管讀起來(lái)還是寫(xiě)起來(lái)都很方便,并且一目了然:
        @Test(expected = IllegalStateException.class)
        
    public void testThrowException() {
            
    throw new IllegalStateException("test");
        }

        
        @Test(expected 
    = IllegalStateException.class)
        
    public void testNotThrowException() {
            System.out.println(
    "No Exception throws");
        }

    對(duì)Rule注解的使用(只有在JUnit4.7以后才有這個(gè)功能),它提供了更加強(qiáng)大的功能,它可以同時(shí)檢查異常類型以及異常消息內(nèi)容,這些內(nèi)容可以只包含其中的某些字符,ExpectedException還支持使用hamcrest中的Matcher,默認(rèn)使用IsInstanceOf和StringContains Matcher。在BlockJUnit4ClassRunner的實(shí)現(xiàn)中,每一個(gè)Test Case運(yùn)行時(shí)都會(huì)重新創(chuàng)建Test Class的實(shí)例,因而在使用ExpectedException這個(gè)Rule時(shí),不用擔(dān)心在多個(gè)Test Case之間相互影響的問(wèn)題:
        @Rule
        
    public final ExpectedException expectedException = ExpectedException.none();
        
        @Test
        
    public void testThrowExceptionWithRule() {
            expectedException.expect(IllegalStateException.
    class);
            
            
    throw new IllegalStateException("test");
        }

        
        @Test
        
    public void testThrowExceptionAndMessageWithRule() {
            expectedException.expect(IllegalStateException.
    class);
            expectedException.expectMessage(
    "fail");
            
            
    throw new IllegalStateException("expect fail");
        }

    在stackoverflow中還有人提到了使用google-code中的catch-exception工程,今天沒(méi)時(shí)間看了,回去好好研究一下。地址是:http://code.google.com/p/catch-exception/

    posted on 2012-11-02 15:02 DLevin 閱讀(9657) 評(píng)論(0)  編輯  收藏 所屬分類: JUnit
    主站蜘蛛池模板: 亚洲AV无码乱码在线观看性色扶| 一个人看的www免费视频在线观看| 亚洲成年网站在线观看| 亚洲精品午夜久久久伊人| 亚洲成年轻人电影网站www| 亚洲成AV人在线播放无码 | 一区二区三区在线免费观看视频| 国产精品亚洲一区二区三区在线观看 | 在线观看免费成人| 妞干网免费视频观看| 在线免费视频一区二区| 青青草国产免费久久久91| 性做久久久久免费看| 亚洲AⅤ无码一区二区三区在线 | 97热久久免费频精品99| 国产1000部成人免费视频| 99视频全部免费精品全部四虎 | 美女又黄又免费的视频| 五月天国产成人AV免费观看| 狠狠躁狠狠爱免费视频无码| 国产成人免费ā片在线观看老同学 | 国产成人综合亚洲绿色| 手机永久免费的AV在线电影网| 一级做a爱过程免费视| 国产成人无码区免费内射一片色欲| 久久九九AV免费精品| xxxxwww免费| 成年轻人网站色免费看| 免费看国产曰批40分钟| 亚洲综合日韩久久成人AV| 亚洲色欲色欲综合网站| 波多野结衣亚洲一级| 国产亚洲精品国产福利在线观看| 国产精品美女久久久免费 | 亚洲国产精品成人午夜在线观看 | 亚洲日韩AV一区二区三区中文 | 亚洲卡一卡二卡乱码新区| 噜噜噜亚洲色成人网站| 日韩a级无码免费视频| 青青视频观看免费99| 亚洲av无码国产精品色在线看不卡 |