??xml version="1.0" encoding="utf-8" standalone="yes"?>91久久久久久久,国产精品自拍小视频,国产一二三区在线视频http://www.aygfsteel.com/stevenjohn/category/52939.html那些青春的岁?/description>zh-cnTue, 13 Nov 2012 20:59:56 GMTTue, 13 Nov 2012 20:59:56 GMT60java实现多个文g压羃http://www.aygfsteel.com/stevenjohn/archive/2012/11/13/391278.htmlabinabinTue, 13 Nov 2012 15:25:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/11/13/391278.htmlhttp://www.aygfsteel.com/stevenjohn/comments/391278.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/11/13/391278.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/391278.htmlhttp://www.aygfsteel.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() {
}
/**
   * 压羃文g
   * @param srcfile File[] 需要压~的文g列表
   * @param zipfile File    压羃后的文g
   */
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();
    }
}
/**
   * 解压~?br />   * @param zipfile File 需要解压羃的文?br />   * @param descDir String 解压后的目标目录
   */
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("解压~完?");
      }
    }
    catch (IOException e) {
      e.printStackTrace();
    }
}
}


本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/Jonthanoscar/archive/2007/08/09/1733812.aspx






试ҎQjunit4试Q:

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://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390680.htmlabinabinFri, 02 Nov 2012 06:40:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390680.htmlhttp://www.aygfsteel.com/stevenjohn/comments/390680.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390680.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/390680.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/390680.html本文介绍在NetBeans开发工具中~写和运行JUnit单元试的基部分。测试一个应用程序是开发周期的一部分Q编写和l护单元试可以保证你源代码中独立的Ҏ可以正常工作?/p>

NetBeans IDE 6.9 中包含JUnit 3.5和JUnit 4.5两个版本Q可自行选择。(关于使用JUnit的更多信息,参考www.junit.org。)

目录
一、新建Java试?br />二、创建Javacd
三、JUnit注释
四、简单的JUnit4试Ҏ
五、运行测?br />


一、新建Java试?/p>用于存放JUnit试cd的包
1.叛_“试?#8221;>“新徏”>“Java?#8221;?br />2.?#8220;新徏Java?#8221;对话框中Q输入包名,选择位置Q位|最好ؓ“试?#8221;Q以便于区分源码包与试包)?br />3.“完成”卛_?br />

二、创建javacd试

用于为javacd文g创徏试?br />1.叛_要创建测试的cLӞ选择“工具”>“创徏 JUnit 试”?br />2.?#8220;选择 JUnit 版本”对话框中Q选择“JUnit 4”?br />3.弹出“创徏试”对话框,?#8220;创徏试”对话框中可以创徏的测试命名、选择位置Q最好选择试包)?br />注:NetBeans中第一ơ?IDE 创徏试框架ӞIDE 会提C选择 JUnit 版本。选择JUnit4后会自动删除JUnit 3库,下次再创建时Q会默认创徏JUnit4的测试?br />

三、JUnit注释

JUnit注释跟在试Ҏ前,Ҏ试方法的cdq行说明?br />

1.JUnit试注释

试注释Q@Test 标注方法标Cؓ试Ҏ?br />

2.试cR测试的初始化函数和释放Ҏ

?JUnit 4 中,可以使用标注来标C下类型的初始化函数和释放Ҏ?br />试cd始化函数Q@BeforeClass 标注方法标Cؓ试cd始化Ҏ。测试类初始化方法只能运行一ơ,q且在测试类中的M其他Ҏ之前q行?
试c释放方?/strong>Q@AfterClass 标注方法标Cؓ试c释放方法。测试类释放Ҏ只能q行一ơ,q且在测试类中的M其他Ҏ完成之后q行?
试初始化函?/strong>Q@Before 标注方法标Cؓ试初始化方法。测试初始化Ҏ在测试类中的各测试用例之前运行。运行测试不需要测试初始化ҎQ但是,如果需要在
q行试之前初始化一些变量,则可以用测试初始化Ҏ?
试释放ҎQ@After 标注方法标Cؓ试释放Ҏ。测试释放方法在试cM的各试用例之后q行。运行测试不需要测试释放方法,但是Q可能需要用释放方?br />来清理运行测试用例时所需的Q何数据?

3.用试注释

用试Q@Ignore 标注该Ҏ用?br />

四、简单的JUnit4试Ҏ

创徏javacd试后,分生成该cL有方法的试Ҏ。(试Ҏ很多Q?br />断言Q?br />1.assertEquals( 期望? 实际?) // 实际值用被测试方法代替时是对该Ҏ的测?br />2.assertTrue( 实际?)
3.assert False(实际?
注:此方法?JUnit assertTrue ?assertFalse Ҏ来测试各U可能的l果。要通过此方法的试QassertTrue 必须全部?trueQƈ?assertFalse 必须
全部?false?br />Q?br />4.@Test(timeout=1000) // 时被设|ؓ 1000 毫秒?br />异常:
5.@Test(expected=IllegalArgumentException.class) // q回异常
用试:
6.@Ignore // 在@Test 上方d @Ignore 标注来禁用测试?br />

五、运行测?/p>1.q行单个试Q?br />叛_要运行的试Q选择“q行文g”?br />2.q行整个试Q?br />1)叛_要运行的试包,选择“新徏”>“其它”打开“新徏向导”?br />2)cd选择“JUnit”Q文件类型选择“试套g”Q点?#8220;下一?#8221;?br />3)输入试名,选择位置Q及要测试的包?br />4)“完成”卛_?br />此时q行q个试套g卛_q行包内的所有测试?br />

abin 2012-11-02 14:40 发表评论
]]>
Junit单元试框架介绍http://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390676.htmlabinabinFri, 02 Nov 2012 06:16:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390676.htmlhttp://www.aygfsteel.com/stevenjohn/comments/390676.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/11/02/390676.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/390676.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/390676.html软g试
___________________________________________________________________________
Unit Test是由E序员本w来~写的?

以下介绍Junit单元试框架Q官|地址www.junit.org

JUnit是由 Erich Gamma ?Kent Beck ~写的一个回归测试框Ӟregression testing frameworkQ。Junit试是程序员试Q即所谓白盒测试,因ؓE序员知道被试的Y件如何(HowQ完成功能和完成什么样QWhatQ的功能?

Junit3.x
___________________________________________________________________________

Junit3.x中用包junit.framework.*

1.       必须l承TestCasec?

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("计算dp|", 3, result);

         }

public void tearDown() {

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

         }

}



2.       试用例QTest CaseQ是单元试的一个非帔R要的斚w?

3.       单元试主要是用来判断程序的执行l果与自己期望的l果是否一致?

4.       在Junit3.x中,试Ҏ规则定义如下Q?

1)      public

2)      void

3)      无参数的

4)      试Ҏ名以test开?

5.       Test Case之间一定要保持完全的独立性,不允许出CQ何的依赖关系?

6.       我们不能依赖于测试方法的执行序?

7.       关于setUp与tearDownҎ的执行顺序:

1Q?setUp

2Q?testAdd

3Q?tearDown

8.       Junit两种cd错误QFailure ?Error

FailureQ指预期l果与实际结果不同,例如当你使用assertEquals或者assertXXXҎ断言p|Ӟ或者调用failҎQ就会报出FailureQ这时要查测试方法逻辑设计是否有误?

    public void testDevide() {

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

        int expected = 0;

        int actual = 0;

        try {

            actual = cal.devide(1, 3);

        } catch (Exception e) {

            Assert.fail("试p|"); //不应该执行这D?

        }

        Assert.assertEquals(expected, actual);

    }

         ErrorQ指E序在断a执行之前Q程序就因ؓ某种错误而引发异常,DE序l止Q例如测试方法中因抛出某个异常,使得试Ҏ无法正确执行到断aq束,q时你要查测试的Ҏ是否有未考虑到的情况而引hE突然中断?

               也就是说代码中抛Z异常{媄响代码正常执行的情况Q比如ArrayIndexOfBoundsException、NullPointExceptionQ也可能是磁盘已满、网l中断等{外部环境失败所带来的媄响?

首先处理ErrorQ然后在处理Failure.

9.       q行试用例

1)      IDE中,如Eclipse工具已经内置了JunitQ所以可以直接在试cM鼠标右键Run--Junit Testq行?



2)      使用junit.textui.TestRunnerc运行测试类.

public static void main(String[] args) {

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

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

}

3)      使用TestSuite

a)        一ơ可以运行多个测试类q行试

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()ҎQ必ȝ承TestCase

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)   l合模式Q组合方式多元化

……

public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(new XXXTest("testABC"));  // 执行testABC()Ҏ
        suite.addTest(YYYTest.suite()); // suite() 传回TestSuite实例
        suite.addTestSuite(OOOTest.class);//自动查找OOOTestcMtestXXXҎ
        return suite;
    }

10.试之前是什么状态,在测试执行完成后应该是什么状态,而不应该׃试执行的原因到D了状态发生了变化?

Junit4.x
___________________________________________________________________________

Junit4.x开始支持Annotation注解技术,在编写测试用例时化不动?
Junit4.x中用的包org.junit.*

Junit4.x是兼容以前版?

Eclipse中自带了Junit4Q版本ؓjunit4.3.1. BC-EC工程中用的版本为Junit4.4Q目前最新版?.11



1. 无需l承TestCasec,所有被@Test注解所修饰的publicQvoidQ无参数的方法都是测试用例,Junit自动查找注解Ҏq执行测试?

@Test

    public void testAdd() {

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



        Assert.assertEquals("计算dp|", 3, result);

}

2. 虽然Junit4.x中测试类中的Ҏ名称可以随便取,但是跟junit3.x中测试类Ҏ命名U定一_l一Ҏ名以test开头?

3. 使用@Before注解所修饰的方法同junit3.x中的setUpҎ的功能,使用@After注解所修改的方法同junit3.x试cM的tearDownҎ的功能?@Before和@After可以在多ơ指?

@Before

    public void init() {

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

        cal = new Calculator();

}



@After

    public void destroy() {

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

}

4. 通过@BeforeClass和@AfterClass注解标注publicQstaticQvoidQ无参数的类Ҏ。在所有测试方法执行之前和之后执行?

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

5. 使用@Ignore注解所修饰的方法(可以表示未~写完该用例或者想用该用例)Q运行器会忽略该Ҏ的测试;当修饰类Ӟq行器会忽略掉所有测试方法?

@Test

    @Ignore("未完成")

    public void testMultiply() {

    … …

}

Eclipse中Junit执行l果中会提示如下Q?





6. 预期异常Q?

也可以用在junit3.x中提到的fail()来测试预期抛出异常的情况?

public void testDevideByZero() {

        Throwable tx = null;

        try {

            cal.devide(1, 0);

            Assert.fail("应该按预期抛出异常,试p|");

        } catch (Exception e) {

            tx = e;

        }

        Assert.assertNotNull(tx.getMessage());

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

        Assert.assertEquals("除数不能?Q?, tx.getMessage());

}

junit4中用Test中的expected属性达到相同的功能Q代码量很?

    @Test(expected = ArithmeticException.class)

public void testDevideByZero() throws Exception {

        cal.devide(1, 0); // 应该抛出异常

}

7. 使用@Test(timeout = 2000) 注解预期某些操作应该在指定时间内完成Q否则测试失败?nbsp;   单位是毫U?

8. 试q行器:可以使用@RunWith注解使用的runner.

Junit4中内|的q行器有Q?

a) 附带兼容junit3.xq行?

org.junit.internal.runners.Junit38ClassRunner

b) 参数化运行器Q可讑֮一l参敎ͼ每次q行试时自动在指定位置l予不同的参数?

org.junit.runners.Parameterized

c) Suiteq行器,如同Junit3.x中的TestSuite, 用于Ll合试.

org.junit.runner.Suite

9. 参数化运行器Q?

a) 使用注解@RunWith(value = Parameterized.class) 指定参数化运行器,

b) 定义好一个方法,q回一l参数数据,使用注解@Parameterized.Parameters

c) 试cL造方法中为各个参数赋|构造方法是由Junit调用的)

d) Ҏ必须是publicQstaticQvoidQno-argQ返回一个Collection?

e) Ҏ中每个元素必L一个一l数l,数组中第一个ؓ预期|之后参数一Q参C{?

@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.Suiteq行器:在Junit4中,如果惛_时运行多个测试,需要用两个注解:

@RunWith(value = Suite.class)
@SuiteClasses

使用以上两个注解会通过Suiteq行器来执行试Q在SuiteClasses中指定测试类Q也可以l箋指定SuiteQ这样Junit会在LN面的试cdƈ执行?

    @RunWith(value = Suite.class)

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

public class SuiteCalculatorMyStackTest {

    … …

}



abin 2012-11-02 14:16 发表评论
]]>
վ֩ģ壺 ϵ| ѽ| ̨| | | ¬| | Ͻ| ɽ| | | | | ƶ| | ܱ| ϼ| Ϫ| | | | | Ӻ| Դ| | ɳ| ÷| ϲ| | ʯ| κ| ӱʡ| Ҷ| SHOW| | | ں| | | | |