乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      單元測試工具

       春和秋榮 2019-05-17

      【前言】概念方面的東西。

      單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據(jù)實際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等??偟膩碚f,單元就是人為規(guī)定的最小的被測功能模塊。

       

      第一講,什么是單元測試

      寫了個類,要給別人用,會不會有bug?怎么辦?測試一下。

      用main方法測試好不好?不好!

      1. 不能一起運行!
      2. 大多數(shù)情況下需要人為的觀察輸出確定是否正確

      80各類難道需要寫80個main方法累死你。其中修改了20各類,難道我們還得在跑一邊。

       

      第二講,為什么要進行單元測試

      重用測試,應(yīng)付將來的實現(xiàn)的變化。

      以后基于我現(xiàn)在這個類寫出來的其他代碼,會更加有正確性。

      提高士氣,明確知道我的東西是沒問題的。

      成本:開發(fā),測試,部署,維護。那個階段哈udeqianshi最多的-----------維護。?。?!占60%=è降低后期的成本

      說了一句:保證方法是正確的。

      很多公司都不寫junit測試。為啥嘞,因為中國公司有的太簡單,增刪改差。有的給政府做,無所謂。呵呵。

       

      最終提高軟件的質(zhì)量。

       

      引出junit。單元測試的一個工具,就是junit

      第三講,JUnit4 HelloWorld(開始使用?。。。?/h2>

      前言:Eclipse是直接對junit進行了集成的。我們可以直接用。?。」?/p>

      下面是建一個junit的步驟。

      1.new project

      新建一個包,不是新建一個類哦。

      包名:com.bjsxt.junit4.test。我們需要專門見一個junit的的包。跟java源碼的包并列即可。如圖所示u。

      2.建立類(生成測試類)

      建類的名字。被測類名Test。這么構(gòu)成。比如TTest。

      可以選擇對那個類進行測試??梢赃x擇對類的哪個方法進行測試。

      Eclipse自帶了junit包的,默認就行。一會兒再說,如果不用自帶的jar包應(yīng)該怎么導(dǎo)入外部的包。

      構(gòu)建完了。

      import static org.junit.Assert.*;

      發(fā)現(xiàn)有這么一句代碼。

      這個靜態(tài)類,里面有很多靜態(tài)的方法,可以直接用。

      jdk5出現(xiàn)的新語法。靜態(tài)引入。哈哈。

      3.建立testcase

      其實上一部已經(jīng)建立了testcase的框框吧。我們繼續(xù)完善。

      剛才的狀態(tài):

      按照之前的測試步驟,我們需要寫完程序,用print打印出來,看結(jié)果對不對。但是junit的assert類給我們提供了方法。

      【引言】assert:翻譯,斷言。其實就是判斷的意思。

      assert有很多方法。提供給我們。

      Assert.assertEquals(expected,actual);

      期望值是8,實際值是z。自己進行判斷。

      keeps the bar green ,to keeps the code clean.

      程序自動判斷有什么好處呢?:

      1. 直接看滾動條是不是綠色就能判斷代碼是不是通過
      2. 可以一下子測試很多方法啊。(在類上右鍵,test junit)用main是不行的。
      3. 不用人工肉眼判斷了,程序判斷方便啊。

      第四講。放棄舊的斷言assert,使用hamcrest斷言

      并不是真的放棄舊的assert。只是提出一種新的統(tǒng)一的assertThat。用那種都可以。后者必須用到hamcrest包。

      讀junit網(wǎng)址。可以下載最新想junit來使用。

      讀文檔。看起來跟jdk幫助文檔一樣。

      試一下assert的其他方法:

      幾乎所有的assert方法都有一個重載 的形式。也即是前面有一個字符串參數(shù)。作用是:當斷言沒有通過的時候,會提示這個字符串。

      1. assertThat

      在junit4之后,加入了assertThat方法??梢蕴娲械腶ssert方法。

      使用方法:

      assertThat(actual,matcher)

      matcher:規(guī)則匹配器。

      只用例子:

       

      這個方法需要hamcrest這個包。需要自己下載。

      將hamcrest的兩個jar包加入我們的項目。引入。

      可能會報錯:ClassLoader的錯誤。說明我們引入的包有沖突(他們用到classloader用到不是同一個)。之前講過類似問題

      原因:Eclipse自帶的junit.jar與hamcrest又沖突。

      解決:移除原來的junit.jar,自己import最新的junit.jar即可。

       

      2.使用hamcrest的匹配方法(唯一優(yōu)點)

      a)         更自然

      3.示例

      a)         assertThat( n, allOf( greaterThan(1), lessThan(15) ) );滿足左右條件 assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );滿足其中一個條件
      assertThat( n, anything() );
      assertThat( str, is( "bjsxt" ) );
      assertThat( str, not( "bjxxt" ) );

      b)        assertThat( str, containsString( "bjsxt" ) );
      assertThat( str, endsWith("bjsxt" ) );
      assertThat( str, startsWith( "bjsxt" ) );
      assertThat( n, equalTo( nExpected ) );
      assertThat( str, equalToIgnoringCase( "bjsxt" ) ); assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );

      c)         assertThat( d, closeTo( 3.0, 0.3 ) );
      assertThat( d, greaterThan(3.0) );
      assertThat( d, lessThan (10.0) );
      assertThat( d, greaterThanOrEqualTo (5.0) );
      assertThat( d, lessThanOrEqualTo (16.0) );

      d)        assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
      assertThat( iterable, hasItem ( "bjsxt" ) );
      assertThat( map, hasKey ( "bjsxt" ) );
      assertThat( map, hasValue ( "bjsxt" ) );

      第五講,F(xiàn)ailure和Error

      1. Failure是指測試失敗

      2.Error是指測試程序本身出錯(一個測試單元,出現(xiàn)error就不會再報failure了!有優(yōu)先級的。)

       

      第六講,JUnit4 Annotation(注解?。。?

      1. @Test: 測試方法

       

      在junit4中,新建Junit Test類是之前講過的方法。但是在已有的類中添加新的測試方法,只需要寫一個符合語法的方法,再在前面加上注解:@Test

       

      a)         (expected=XXException.class)期望拋出某種異常,拋出的話不影響測試是否通過。

      b)        (timeout=xxx)如圖:期望在一定時間內(nèi)結(jié)束本方法的測試,否則失敗。、

      2.@Ignore: 被忽略的測試方法

      該測試方法在本次測試中暫時不執(zhí)行。

       

      3.@Before: 每一個測試方法之前運行

       

      4.@After: 每一個測試方法之后運行

       

      上面兩個annotation用在情況:測試方法需要打開文件,我們就在before中打開文件。在after中關(guān)閉文件。

      5.@BeforeClass: 所有測試開始之前運行

      6.@AfterClass: 所有測試結(jié)束之后運行

       

      這個是所有測試方法開始之前使用的。

      beforeClass取得比較耗時的資源。搭載比較耗時間的環(huán)境的時候。

      jiazai 配置文件,什么連接數(shù)據(jù)庫的連接池各種??偛荒苊總€測試方法都執(zhí)行一遍這些操作吧,費時也沒必要。

      afterClass資源釋放掉,環(huán)境卸載

      第七講,運行多個測試

      新建一個java類。

      新建一個Junit類。

      run-configruation-Test—Run
      all tests

       

       

       

      甚至有人提出來,先把測試junit類寫出啦。TDD:Test Drive Development 測試驅(qū)動開發(fā)。一個新的開發(fā)思想。

       

       

       

       

       

       

       

       

       

      注意

      其實最開始創(chuàng)建Junit Test類的時候就已經(jīng)按照這個約定在創(chuàng)建了。

      結(jié)構(gòu)上是:建一個包,與java源碼的包并列。

      命名:類名需要XXXTest;方法名XXXtestMethod

      1. 遵守約定,比如:

      a)        關(guān)于包:類放在test

      b)        關(guān)于測試類:名用XXXTest結(jié)尾

      c)        關(guān)于測試方法:方法用testMethod命名

      其他框架

      除了junit測試框架之外,還有別的測試框架:比如TestNG

       

      ant的使用場合:

      積累業(yè)務(wù)經(jīng)驗是關(guān)鍵啦。而不是編碼經(jīng)驗嘍。。。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多