锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品视频久久,亚洲人片在线观看天堂无码,亚洲中文字幕视频国产http://m.tkk7.com/stevenjohn/category/52939.html閭d簺闈掓槬鐨勫瞾鏈?/description>zh-cnTue, 13 Nov 2012 20:59:56 GMTTue, 13 Nov 2012 20:59:56 GMT60java瀹炵幇澶氫釜鏂囦歡鍘嬬緝http://m.tkk7.com/stevenjohn/archive/2012/11/13/391278.htmlabinabinTue, 13 Nov 2012 15:25:00 GMThttp://m.tkk7.com/stevenjohn/archive/2012/11/13/391278.htmlhttp://m.tkk7.com/stevenjohn/comments/391278.htmlhttp://m.tkk7.com/stevenjohn/archive/2012/11/13/391278.html#Feedback0http://m.tkk7.com/stevenjohn/comments/commentRss/391278.htmlhttp://m.tkk7.com/stevenjohn/services/trackbacks/391278.htmlimport java.io.*;
import java.util.*;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class FileMgr {
public FileMgr() {
}
/**
   * 鍘嬬緝鏂囦歡
   * @param srcfile File[] 闇瑕佸帇緙╃殑鏂囦歡鍒楄〃
   * @param zipfile File    鍘嬬緝鍚庣殑鏂囦歡
   */
public static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) {
    byte[] buf = new byte[1024];
    try {
      // Create the ZIP file
      ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
      // Compress the files
      for (int i = 0; i < srcfile.length; i++) {
        FileInputStream in = new FileInputStream(srcfile[i]);
        // Add ZIP entry to output stream.
        out.putNextEntry(new ZipEntry(srcfile[i].getName()));
        // Transfer bytes from the file to the ZIP file
        int len;
        while ( (len = in.read(buf)) > 0) {
          out.write(buf, 0, len);
        }
        // Complete the entry
        out.closeEntry();
        in.close();
      }
      // Complete the ZIP file
      out.close();
      System.out.println("鍘嬬緝瀹屾垚.");
    }
    catch (IOException e) {
      e.printStackTrace();
    }
}
/**
   * 瑙e帇緙?br />   * @param zipfile File 闇瑕佽В鍘嬬緝鐨勬枃浠?br />   * @param descDir String 瑙e帇鍚庣殑鐩爣鐩綍
   */
public static void UnZipFiles(java.io.File zipfile, String descDir) {
    try {
      // Open the ZIP file
      ZipFile zf = new ZipFile(zipfile);
      for (Enumeration entries = zf.entries(); entries.hasMoreElements(); ) {
        // Get the entry name
        ZipEntry entry = ( (ZipEntry) entries.nextElement());
        String zipEntryName = entry.getName();
        InputStream in = zf.getInputStream(entry);
        // System.out.println(zipEntryName);
        OutputStream out = new FileOutputStream(descDir + zipEntryName);
        byte[] buf1 = new byte[1024];
        int len;
        while ( (len = in.read(buf1)) > 0) {
          out.write(buf1, 0, len);
        }
        // Close the file and stream
        in.close();
        out.close();
        System.out.println("瑙e帇緙╁畬鎴?");
      }
    }
    catch (IOException e) {
      e.printStackTrace();
    }
}
}


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/Jonthanoscar/archive/2007/08/09/1733812.aspx






嫻嬭瘯鏂規硶錛坖unit4嫻嬭瘯錛夛細

package lc.abin.lee.basic.zip.test;

import java.io.File;

import lc.abin.lee.basic.zip.FileMgr;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class testFileZip {
 @BeforeClass
 public static void init(){
  System.out.println("initialize zip");
 }
 @Test
 public void testCreateZIP(){
  File in=new File("D:\\abin.zip");
  File[] file=new File[]{in};
  File zip=new File("D:\\abin.zip");
  FileMgr mgr=new FileMgr();
  mgr.ZipFiles(file, zip);
 }
 @Test
 public void testParseZIP(){
  File in=new File("D:\\abin.zip");
  String filePath="D:/home/";
  FileMgr mgr=new FileMgr();
  mgr.UnZipFiles(in, filePath);
 }
 
 @AfterClass
 public static void destroy(){
  System.out.println("destroy zip");
 }
}



abin 2012-11-13 23:25 鍙戣〃璇勮
]]>
Junit 嫻嬭瘯鏂規硶http://m.tkk7.com/stevenjohn/archive/2012/11/02/390680.htmlabinabinFri, 02 Nov 2012 06:40:00 GMThttp://m.tkk7.com/stevenjohn/archive/2012/11/02/390680.htmlhttp://m.tkk7.com/stevenjohn/comments/390680.htmlhttp://m.tkk7.com/stevenjohn/archive/2012/11/02/390680.html#Feedback0http://m.tkk7.com/stevenjohn/comments/commentRss/390680.htmlhttp://m.tkk7.com/stevenjohn/services/trackbacks/390680.html鏈枃浠嬬粛鍦∟etBeans寮鍙戝伐鍏蜂腑緙栧啓鍜岃繍琛孞Unit鍗曞厓嫻嬭瘯鐨勫熀紜閮ㄥ垎銆傛祴璇曚竴涓簲鐢ㄧ▼搴忔槸寮鍙戝懆鏈熺殑涓閮ㄥ垎錛岀紪鍐欏拰緇存姢鍗曞厓嫻嬭瘯鍙互淇濊瘉浣犳簮浠g爜涓嫭绔嬬殑鏂規硶鍙互姝e父宸ヤ綔銆?/p>

NetBeans IDE 6.9 涓寘鍚獼Unit 3.5鍜孞Unit 4.5涓や釜鐗堟湰錛屽彲鑷閫夋嫨銆傦紙鍏充簬浣跨敤JUnit鐨勬洿澶氫俊鎭紝鍙傝僿ww.junit.org銆傦級

鐩綍
涓銆佹柊寤篔ava嫻嬭瘯鍖?br />浜屻佸垱寤篔ava綾誨簱
涓夈丣Unit娉ㄩ噴
鍥涖佺畝鍗曠殑JUnit4嫻嬭瘯鏂規硶
浜斻佽繍琛屾祴璇?br />


涓銆佹柊寤篔ava嫻嬭瘯鍖?/p>鐢ㄤ簬瀛樻斁JUnit嫻嬭瘯綾誨簱鐨勫寘
1.鍙沖嚮“嫻嬭瘯鍖?#8221;>“鏂板緩”>“Java鍖?#8221;銆?br />2.鍦?#8220;鏂板緩Java鍖?#8221;瀵硅瘽妗嗕腑錛岃緭鍏ュ寘鍚嶏紝閫夋嫨浣嶇疆錛堜綅緗渶濂戒負“嫻嬭瘯鍖?#8221;錛屼互渚夸簬鍖哄垎婧愮爜鍖呬笌嫻嬭瘯鍖咃級銆?br />3.“瀹屾垚”鍗沖彲銆?br />

浜屻佸垱寤簀ava綾誨簱嫻嬭瘯

鐢ㄤ簬涓簀ava綾誨簱鏂囦歡鍒涘緩嫻嬭瘯銆?br />1.鍙沖嚮瑕佸垱寤烘祴璇曠殑綾繪枃浠訛紝閫夋嫨“宸ュ叿”>“鍒涘緩 JUnit 嫻嬭瘯”銆?br />2.鍦?#8220;閫夋嫨 JUnit 鐗堟湰”瀵硅瘽妗嗕腑錛岄夋嫨“JUnit 4”銆?br />3.寮瑰嚭“鍒涘緩嫻嬭瘯”瀵硅瘽妗嗭紝鍦?#8220;鍒涘緩嫻嬭瘯”瀵硅瘽妗嗕腑鍙互鍒涘緩鐨勬祴璇曞懡鍚嶃侀夋嫨浣嶇疆錛堟渶濂介夋嫨嫻嬭瘯鍖咃級銆?br />娉細NetBeans涓涓嬈′嬌鐢?IDE 鍒涘緩嫻嬭瘯妗嗘灦鏃訛紝IDE 浼氭彁紺洪夋嫨 JUnit 鐗堟湰銆傞夋嫨JUnit4鍚庝細鑷姩鍒犻櫎JUnit 3搴擄紝涓嬫鍐嶅垱寤烘椂錛屼細榛樿鍒涘緩JUnit4鐨勬祴璇曘?br />

涓夈丣Unit娉ㄩ噴

JUnit娉ㄩ噴璺熷湪嫻嬭瘯鏂規硶鍓嶏紝瀵規祴璇曟柟娉曠殑綾誨瀷榪涜璇存槑銆?br />

1.JUnit嫻嬭瘯娉ㄩ噴

嫻嬭瘯娉ㄩ噴錛欯Test 鏍囨敞灝嗘柟娉曟爣璁頒負嫻嬭瘯鏂規硶銆?br />

2.嫻嬭瘯綾匯佹祴璇曠殑鍒濆鍖栧嚱鏁板拰閲婃斁鏂規硶

鍦?JUnit 4 涓紝鍙互浣跨敤鏍囨敞鏉ユ爣璁頒互涓嬬被鍨嬬殑鍒濆鍖栧嚱鏁板拰閲婃斁鏂規硶銆?br />嫻嬭瘯綾誨垵濮嬪寲鍑芥暟錛欯BeforeClass 鏍囨敞灝嗘柟娉曟爣璁頒負嫻嬭瘯綾誨垵濮嬪寲鏂規硶銆傛祴璇曠被鍒濆鍖栨柟娉曞彧鑳借繍琛屼竴嬈★紝騫朵笖鍦ㄦ祴璇曠被涓殑浠諱綍鍏朵粬鏂規硶涔嬪墠榪愯銆?
嫻嬭瘯綾婚噴鏀炬柟娉?/strong>錛欯AfterClass 鏍囨敞灝嗘柟娉曟爣璁頒負嫻嬭瘯綾婚噴鏀炬柟娉曘傛祴璇曠被閲婃斁鏂規硶鍙兘榪愯涓嬈★紝騫朵笖鍦ㄦ祴璇曠被涓殑浠諱綍鍏朵粬鏂規硶瀹屾垚涔嬪悗榪愯銆?
嫻嬭瘯鍒濆鍖栧嚱鏁?/strong>錛欯Before 鏍囨敞灝嗘柟娉曟爣璁頒負嫻嬭瘯鍒濆鍖栨柟娉曘傛祴璇曞垵濮嬪寲鏂規硶鍦ㄦ祴璇曠被涓殑鍚勬祴璇曠敤渚嬩箣鍓嶈繍琛屻傝繍琛屾祴璇曚笉闇瑕佹祴璇曞垵濮嬪寲鏂規硶錛屼絾鏄紝濡傛灉闇瑕佸湪
榪愯嫻嬭瘯涔嬪墠鍒濆鍖栦竴浜涘彉閲忥紝鍒欏彲浠ヤ嬌鐢ㄦ祴璇曞垵濮嬪寲鏂規硶銆?
嫻嬭瘯閲婃斁鏂規硶錛欯After 鏍囨敞灝嗘柟娉曟爣璁頒負嫻嬭瘯閲婃斁鏂規硶銆傛祴璇曢噴鏀炬柟娉曞湪嫻嬭瘯綾諱腑鐨勫悇嫻嬭瘯鐢ㄤ緥涔嬪悗榪愯銆傝繍琛屾祴璇曚笉闇瑕佹祴璇曢噴鏀炬柟娉曪紝浣嗘槸錛屽彲鑳介渶瑕佷嬌鐢ㄩ噴鏀炬柟娉?br />鏉ユ竻鐞嗚繍琛屾祴璇曠敤渚嬫椂鎵闇鐨勪換浣曟暟鎹?

3.紱佺敤嫻嬭瘯娉ㄩ噴

紱佺敤嫻嬭瘯錛欯Ignore 鏍囨敞灝嗚鏂規硶紱佺敤銆?br />

鍥涖佺畝鍗曠殑JUnit4嫻嬭瘯鏂規硶

鍒涘緩java綾誨簱嫻嬭瘯鍚庯紝鍒嗙敓鎴愯綾繪墍鏈夋柟娉曠殑嫻嬭瘯鏂規硶銆傦紙嫻嬭瘯鏂規硶寰堝錛?br />鏂█錛?br />1.assertEquals( 鏈熸湜鍊? 瀹為檯鍊?) // 瀹為檯鍊肩敤琚祴璇曟柟娉曚唬鏇挎椂灝辨槸瀵硅鏂規硶鐨勬祴璇?br />2.assertTrue( 瀹為檯鍊?)
3.assert False(瀹為檯鍊?
娉細姝ゆ柟娉曚嬌鐢?JUnit assertTrue 鍜?assertFalse 鏂規硶鏉ユ祴璇曞悇縐嶅彲鑳界殑緇撴灉銆傝閫氳繃姝ゆ柟娉曠殑嫻嬭瘯錛宎ssertTrue 蹇呴』鍏ㄩ儴涓?true錛屽茍涓?assertFalse 蹇呴』
鍏ㄩ儴涓?false銆?br />瓚呮椂錛?br />4.@Test(timeout=1000) // 瓚呮椂琚緗負 1000 姣銆?br />寮傚父:
5.@Test(expected=IllegalArgumentException.class) // 榪斿洖寮傚父
紱佺敤嫻嬭瘯:
6.@Ignore // 鍦ˊTest 涓婃柟娣誨姞 @Ignore 鏍囨敞鏉ョ鐢ㄦ祴璇曘?br />

浜斻佽繍琛屾祴璇?/p>1.榪愯鍗曚釜嫻嬭瘯錛?br />鍙沖嚮瑕佽繍琛岀殑嫻嬭瘯錛岄夋嫨“榪愯鏂囦歡”銆?br />2.榪愯鏁翠釜嫻嬭瘯錛?br />1)鍙沖嚮瑕佽繍琛岀殑嫻嬭瘯鍖咃紝閫夋嫨“鏂板緩”>“鍏跺畠”鎵撳紑“鏂板緩鍚戝”銆?br />2)綾誨埆閫夋嫨“JUnit”錛屾枃浠剁被鍨嬮夋嫨“嫻嬭瘯濂椾歡”錛岀偣鍑?#8220;涓嬩竴姝?#8221;銆?br />3)杈撳叆嫻嬭瘯鍚嶏紝閫夋嫨浣嶇疆錛屽強瑕佹祴璇曠殑鍖呫?br />4)“瀹屾垚”鍗沖彲銆?br />姝ゆ椂榪愯榪欎釜嫻嬭瘯濂椾歡鍗沖彲榪愯鍖呭唴鐨勬墍鏈夋祴璇曘?br />

abin 2012-11-02 14:40 鍙戣〃璇勮
]]>
Junit鍗曞厓嫻嬭瘯妗嗘灦浠嬬粛http://m.tkk7.com/stevenjohn/archive/2012/11/02/390676.htmlabinabinFri, 02 Nov 2012 06:16:00 GMThttp://m.tkk7.com/stevenjohn/archive/2012/11/02/390676.htmlhttp://m.tkk7.com/stevenjohn/comments/390676.htmlhttp://m.tkk7.com/stevenjohn/archive/2012/11/02/390676.html#Feedback0http://m.tkk7.com/stevenjohn/comments/commentRss/390676.htmlhttp://m.tkk7.com/stevenjohn/services/trackbacks/390676.html杞歡嫻嬭瘯
___________________________________________________________________________
Unit Test鏄敱紼嬪簭鍛樻湰韜潵緙栧啓鐨勩?

浠ヤ笅浠嬬粛Junit鍗曞厓嫻嬭瘯妗嗘灦錛氬畼緗戝湴鍧www.junit.org

JUnit鏄敱 Erich Gamma 鍜?Kent Beck 緙栧啓鐨勪竴涓洖褰掓祴璇曟鏋訛紙regression testing framework錛夈侸unit嫻嬭瘯鏄▼搴忓憳嫻嬭瘯錛屽嵆鎵璋撶櫧鐩掓祴璇曪紝鍥犱負紼嬪簭鍛樼煡閬撹嫻嬭瘯鐨勮蔣浠跺浣曪紙How錛夊畬鎴愬姛鑳藉拰瀹屾垚浠涔堟牱錛圵hat錛夌殑鍔熻兘銆?

Junit3.x
___________________________________________________________________________

Junit3.x涓嬌鐢ㄥ寘junit.framework.*

1.       蹇呴』緇ф壙TestCase綾?

public class CalculatorTest extends TestCase {

    private Calculator cal;

    public CalculatorTest() {

    }

    public CalculatorTest(String name) {

        super(name);

    }

    public void setUp() {

        System.out.println("...........setUp..............");

        cal = new Calculator();

    }

    public void testAdd() {

        int result = cal.add(1, 2);

        Assert.assertEquals("璁$畻娣誨姞澶辮觸", 3, result);

         }

public void tearDown() {

        System.out.println("........tearDown........");

         }

}



2.       嫻嬭瘯鐢ㄤ緥錛圱est Case錛夋槸鍗曞厓嫻嬭瘯鐨勪竴涓潪甯擱噸瑕佺殑鏂歸潰銆?

3.       鍗曞厓嫻嬭瘯涓昏鏄敤鏉ュ垽鏂▼搴忕殑鎵ц緇撴灉涓庤嚜宸辨湡鏈涚殑緇撴灉鏄惁涓鑷淬?

4.       鍦↗unit3.x涓紝嫻嬭瘯鏂規硶瑙勫垯瀹氫箟濡備笅錛?

1)      public

2)      void

3)      鏃犲弬鏁扮殑

4)      嫻嬭瘯鏂規硶鍚嶄互test寮澶?

5.       Test Case涔嬮棿涓瀹氳淇濇寔瀹屽叏鐨勭嫭绔嬫э紝涓嶅厑璁稿嚭鐜頒換浣曠殑渚濊禆鍏崇郴銆?

6.       鎴戜滑涓嶈兘渚濊禆浜庢祴璇曟柟娉曠殑鎵ц欏哄簭銆?

7.       鍏充簬setUp涓巘earDown鏂規硶鐨勬墽琛岄『搴忥細

1錛?setUp

2錛?testAdd

3錛?tearDown

8.       Junit涓ょ綾誨瀷閿欒錛孎ailure 鍜?Error

Failure錛氭寚棰勬湡緇撴灉涓庡疄闄呯粨鏋滀笉鍚岋紝渚嬪褰撲綘浣跨敤assertEquals鎴栬卆ssertXXX鏂規硶鏂█澶辮觸鏃訛紝鎴栬呰皟鐢╢ail鏂規硶錛屽氨浼氭姤鍑篎ailure錛岃繖鏃惰媯鏌ユ祴璇曟柟娉曢昏緫璁捐鏄惁鏈夎銆?

    public void testDevide() {

        System.out.println(".........testDevide()........");

        int expected = 0;

        int actual = 0;

        try {

            actual = cal.devide(1, 3);

        } catch (Exception e) {

            Assert.fail("嫻嬭瘯澶辮觸"); //涓嶅簲璇ユ墽琛岃繖孌?

        }

        Assert.assertEquals(expected, actual);

    }

         Error錛氭寚紼嬪簭鍦ㄦ柇璦鎵ц涔嬪墠錛岀▼搴忓氨鍥犱負鏌愮閿欒鑰屽紩鍙戝紓甯革紝瀵艱嚧紼嬪簭緇堟錛屼緥濡傛祴璇曟柟娉曚腑鍥犳姏鍑烘煇涓紓甯革紝浣垮緱嫻嬭瘯鏂規硶鏃犳硶姝g‘鎵ц鍒版柇璦灝辯粨鏉燂紝榪欐椂浣犺媯鏌ユ祴璇曠殑鏂規硶鏄惁鏈夋湭鑰冭檻鍒扮殑鎯呭喌鑰屽紩璧鋒祦紼嬬獊鐒朵腑鏂?

               涔熷氨鏄浠g爜涓姏鍑轟簡寮傚父絳夊獎鍝嶄唬鐮佹甯告墽琛岀殑鎯呭喌錛屾瘮濡侫rrayIndexOfBoundsException銆丯ullPointException錛屼篃鍙兘鏄鐩樺凡婊°佺綉緇滀腑鏂瓑絳夊閮ㄧ幆澧冨け璐ユ墍甯︽潵鐨勫獎鍝嶃?

棣栧厛澶勭悊Error錛岀劧鍚庡湪澶勭悊Failure.

9.       榪愯嫻嬭瘯鐢ㄤ緥

1)      IDE涓紝濡侲clipse宸ュ叿宸茬粡鍐呯疆浜咼unit錛屾墍浠ュ彲浠ョ洿鎺ュ湪嫻嬭瘯綾諱腑榧犳爣鍙抽敭Run--Junit Test榪愯銆?



2)      浣跨敤junit.textui.TestRunner綾昏繍琛屾祴璇曠被.

public static void main(String[] args) {

        junit.textui.TestRunner.run(MyStackTest.class);

        junit.textui.TestRunner.run(new CalculatorTest("testAdd"));

}

3)      浣跨敤TestSuite

a)        涓嬈″彲浠ヨ繍琛屽涓祴璇曠被榪涜嫻嬭瘯

public class TestAll {
    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTestSuite(OOOTest.class);
        suite.addTestSuite(XXXTest.class);
        suite.addTestSuite(YYYTest.class);
        return suite;
    }
    public static void main(String[] args) {
        TestRunner.run(suite());
    }
}

b)        閫氳繃IDE鑷姩鍙戠幇suite()鏂規硶錛屽繀欏葷戶鎵縏estCase

public class TestAll extends TestCase {
    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTestSuite(OOOTest.class);
        suite.addTestSuite(XXXTest.class);
        suite.addTestSuite(YYYTest.class);
        return suite;
    }
}

c)   緇勫悎妯″紡錛岀粍鍚堟柟寮忓鍏冨寲

……

public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(new XXXTest("testABC"));  // 鎵цtestABC()鏂規硶
        suite.addTest(YYYTest.suite()); // suite() 浼犲洖TestSuite瀹炰緥
        suite.addTestSuite(OOOTest.class);//鑷姩鏌ユ壘OOOTest綾諱腑testXXX鏂規硶
        return suite;
    }

10.嫻嬭瘯涔嬪墠鏄粈涔堢姸鎬侊紝鍦ㄦ祴璇曟墽琛屽畬鎴愬悗灝卞簲璇ユ槸浠涔堢姸鎬侊紝鑰屼笉搴旇鐢變簬嫻嬭瘯鎵ц鐨勫師鍥犲埌瀵艱嚧浜嗙姸鎬佸彂鐢熶簡鍙樺寲銆?

Junit4.x
___________________________________________________________________________

Junit4.x寮濮嬫敮鎸丄nnotation娉ㄨВ鎶鏈紝鍦ㄧ紪鍐欐祴璇曠敤渚嬫椂綆鍖栦笉灝戝姩浣?
Junit4.x涓嬌鐢ㄧ殑鍖卭rg.junit.*

Junit4.x鏄吋瀹逛互鍓嶇増鏈?

Eclipse涓嚜甯︿簡Junit4錛岀増鏈負junit4.3.1. BC-EC宸ョ▼涓嬌鐢ㄧ殑鐗堟湰涓篔unit4.4錛岀洰鍓嶆渶鏂扮増鏈?.11



1. 鏃犻渶緇ф壙TestCase綾伙紝鎵鏈夎@Test娉ㄨВ鎵淇グ鐨刾ublic錛寁oid錛屾棤鍙傛暟鐨勬柟娉曢兘鏄祴璇曠敤渚嬶紝Junit鑷姩鏌ユ壘娉ㄨВ鏂規硶騫舵墽琛屾祴璇曘?

@Test

    public void testAdd() {

        int result = cal.add(1, 2);



        Assert.assertEquals("璁$畻娣誨姞澶辮觸", 3, result);

}

2. 铏界劧Junit4.x涓祴璇曠被涓殑鏂規硶鍚嶇О鍙互闅忎究鍙栵紝浣嗘槸寤鴻璺焜unit3.x涓祴璇曠被鏂規硶鍛藉悕綰﹀畾涓鑷達紝緇熶竴鏂規硶鍚嶄互test寮澶淬?

3. 浣跨敤@Before娉ㄨВ鎵淇グ鐨勬柟娉曞悓junit3.x涓殑setUp鏂規硶鐨勫姛鑳斤紝浣跨敤@After娉ㄨВ鎵淇敼鐨勬柟娉曞悓junit3.x嫻嬭瘯綾諱腑鐨則earDown鏂規硶鐨勫姛鑳姐?@Before鍜孈After鍙互鍦ㄥ嬈℃寚瀹?

@Before

    public void init() {

        System.out.println("...........setUp..............");

        cal = new Calculator();

}



@After

    public void destroy() {

        System.out.println("........tearDown........");

}

4. 閫氳繃@BeforeClass鍜孈AfterClass娉ㄨВ鏍囨敞public錛宻tatic錛寁oid錛屾棤鍙傛暟鐨勭被鏂規硶銆傚湪鎵鏈夋祴璇曟柟娉曟墽琛屼箣鍓嶅拰涔嬪悗鎵ц銆?

@BeforeClass
public static void setUpBeforeClass() {
    ...
}
@AfterClass
public static void tearDownAfterClass() {
    ...
}

5. 浣跨敤@Ignore娉ㄨВ鎵淇グ鐨勬柟娉曪紙鍙互琛ㄧず灝氭湭緙栧啓瀹岃鐢ㄤ緥鎴栬呮兂紱佺敤璇ョ敤渚嬶級錛岃繍琛屽櫒浼氬拷鐣ヨ鏂規硶鐨勬祴璇曪紱褰撲慨楗扮被鏃訛紝榪愯鍣ㄤ細蹇界暐鎺夋墍鏈夋祴璇曟柟娉曘?

@Test

    @Ignore("灝氭湭瀹屾垚")

    public void testMultiply() {

    … …

}

Eclipse涓璊unit鎵ц緇撴灉涓細鎻愮ず濡備笅錛?





6. 棰勬湡寮傚父錛?

涔熷彲浠ヤ嬌鐢ㄥ湪junit3.x涓彁鍒扮殑fail()鏉ユ祴璇曢鏈熸姏鍑哄紓甯哥殑鎯呭喌銆?

public void testDevideByZero() {

        Throwable tx = null;

        try {

            cal.devide(1, 0);

            Assert.fail("搴旇鎸夐鏈熸姏鍑哄紓甯革紝嫻嬭瘯澶辮觸");

        } catch (Exception e) {

            tx = e;

        }

        Assert.assertNotNull(tx.getMessage());

        Assert.assertEquals(ArithmeticException.class, tx.getClass());

        Assert.assertEquals("闄ゆ暟涓嶈兘涓?錛?, tx.getMessage());

}

junit4涓嬌鐢═est涓殑expected灞炴ц揪鍒扮浉鍚岀殑鍔熻兘錛屼唬鐮侀噺灝忓緢澶?

    @Test(expected = ArithmeticException.class)

public void testDevideByZero() throws Exception {

        cal.devide(1, 0); // 搴旇鎶涘嚭寮傚父

}

7. 浣跨敤@Test(timeout = 2000) 娉ㄨВ棰勬湡鏌愪簺鎿嶄綔搴旇鍦ㄦ寚瀹氭椂闂村唴瀹屾垚錛屽惁鍒欐祴璇曞け璐ャ?nbsp;   鍗曚綅鏄縐掋?

8. 嫻嬭瘯榪愯鍣細鍙互浣跨敤@RunWith娉ㄨВ浣跨敤鐨剅unner.

Junit4涓唴緗殑榪愯鍣ㄦ湁錛?

a) 闄勫甫鍏煎junit3.x榪愯鍣?

org.junit.internal.runners.Junit38ClassRunner

b) 鍙傛暟鍖栬繍琛屽櫒錛屽彲璁懼畾涓緇勫弬鏁幫紝姣忔榪愯嫻嬭瘯鏃惰嚜鍔ㄥ湪鎸囧畾浣嶇疆緇欎簣涓嶅悓鐨勫弬鏁般?

org.junit.runners.Parameterized

c) Suite榪愯鍣紝濡傚悓Junit3.x涓殑TestSuite, 鐢ㄤ簬浠繪剰緇勫悎嫻嬭瘯.

org.junit.runner.Suite

9. 鍙傛暟鍖栬繍琛屽櫒錛?

a) 浣跨敤娉ㄨВ@RunWith(value = Parameterized.class) 鎸囧畾鍙傛暟鍖栬繍琛屽櫒,

b) 瀹氫箟濂戒竴涓柟娉曪紝榪斿洖涓緇勫弬鏁版暟鎹紝浣跨敤娉ㄨВ@Parameterized.Parameters

c) 嫻嬭瘯綾繪瀯閫犳柟娉曚腑涓哄悇涓弬鏁拌祴鍊鹼紙鏋勯犳柟娉曟槸鐢盝unit璋冪敤鐨勶級

d) 鏂規硶蹇呴』鏄痯ublic錛宻tatic錛寁oid錛宯o-arg錛岃繑鍥炰竴涓狢ollection銆?

e) 鏂規硶涓瘡涓厓绱犲繀欏繪槸涓涓竴緇存暟緇勶紝鏁扮粍涓涓涓負棰勬湡鍊鹼紝涔嬪悗鍙傛暟涓錛屽弬鏁頒簩絳夈?

@RunWith(value = Parameterized.class)

public class ParamCalculatorTest {



    private Calculator cal;

    private int expected;

    private int para1;

    private int para2;



    @Parameterized.Parameters

    public static Collection<Integer[]> getParamData() {

       Integer[][] data = new Integer[][] { { 5, 3, 2 }, { 3, 1, 2 }, { 2, 1, 1 } };

        return Arrays.asList(data);

    }



    @Before

    public void init() {

        cal = new Calculator();

    }



public ParamCalculatorTest(int expected, int para1, int para2) {

        this.expected = expected;

        this.para1 = para1;

        this.para2 = para2;

    }



    @Test

    public void testAdd() {

        int result = cal.add(para1, para2);

        Assert.assertEquals(expected, result);

}



    @After

    public void destory() {

    }

}



10.Suite榪愯鍣細鍦↗unit4涓紝濡傛灉鎯沖悓鏃惰繍琛屽涓祴璇曪紝闇瑕佷嬌鐢ㄤ袱涓敞瑙o細

@RunWith(value = Suite.class)
@SuiteClasses

浣跨敤浠ヤ笂涓や釜娉ㄨВ浼氶氳繃Suite榪愯鍣ㄦ潵鎵ц嫻嬭瘯錛屽湪SuiteClasses涓寚瀹氭祴璇曠被錛屼篃鍙互緇х畫鎸囧畾Suite錛岃繖鏍稪unit浼氬湪鍘繪煡鎵鵑噷闈㈢殑嫻嬭瘯綾誨茍鎵ц銆?

    @RunWith(value = Suite.class)

@SuiteClasses( { CalculatorTest.class, MyStackTest.class })

public class SuiteCalculatorMyStackTest {

    … …

}



abin 2012-11-02 14:16 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲乱码日产精品a级毛片久久| 亚洲AV噜噜一区二区三区 | 免费A级毛片无码视频| 亚洲精品无码不卡在线播放HE| 免费无码一区二区| 亚洲免费无码在线| 2022国内精品免费福利视频| 亚洲国产成人爱av在线播放| 七次郎成人免费线路视频 | 在线精品一卡乱码免费| 亚洲色大成网站WWW久久九九| 好吊色永久免费视频大全| 在线亚洲人成电影网站色www| 中文字幕不卡免费视频| 亚洲精品无码专区在线在线播放 | 亚洲香蕉网久久综合影视| 久久WWW免费人成—看片| 亚洲色无码专区在线观看| 免费观看男人吊女人视频| 亚洲一区二区三区日本久久九| 99热这里只有精品6免费| 亚洲另类春色校园小说| AV片在线观看免费| 亚洲av日韩av永久无码电影| 无码国产亚洲日韩国精品视频一区二区三区 | 人妻无码久久一区二区三区免费 | 在线免费观看h片| 亚洲日韩激情无码一区| 免费在线看黄网站| 亚洲天堂电影在线观看| 在线观看视频免费国语| 亚洲日韩在线中文字幕综合| 亚洲国产小视频精品久久久三级| 中文字幕av无码不卡免费| 久久亚洲日韩精品一区二区三区| 日本zzzzwww大片免费| 亚洲变态另类一区二区三区| 亚洲精品tv久久久久| 国产va在线观看免费| 亚洲制服丝袜中文字幕| 啊灬啊灬别停啊灬用力啊免费看|