标签:junit 开头 rac ret ima turn exce http 笔记
程序员每天工作的基本流程:
1、从svn检出代码;
2、运行单元测试,测试无误,进入下一步;
3、开始一天的代码编写工作;
4、代码提交到服务器之前进行单元测试;
5、单元测试通过提交到svn服务器。
一些关于测试的概念:1、集成测试;2、验收测试、压力测试
由此引出了单元测试的最基本的需求是:实现自动化测试。
该门课程的主要内容:
单元测试
1、自动化测试
(1)通过断言的方式来确定结果是否正确 Assert;
(2)引入 junit 的 jar 包;
(3)创建一个操作类
2、基于测试开发的方式和优点
3、stub 和 mock
4、在容器中测试
(1)jetty
(2)catcus
5、dbunit
接下来我们进行简单的操作
第一步建立一个java工程,导入junit 4.0版本以上的java包,最好不要使用eclipse自带的java包,将该java添加进入工程中
第二步:编写一个我们要进行测试类。我们使用加减操作
package com.weiyuan.test; /** * 需要测试的类用于增删改查操作 * */ public class Calcuate { public int add(int a,int b){ return a+b; } public int minus(int a,int b){ return a-b; } public int divide(int a,int b){ return a/b; } public int mul(int a,int b){ return a/b; } }
第三步:创建我们的测试类,我们在eclipse中创建sourefoder文件夹,命名为test文件夹
默认情况下:
source folder是用来存放Java源代码的,其下的所有Java源文件都会被时时编译成class文件。对于JavaSE的项目会被编译到项目目录下的bin目录下,对于JavaEE项目会被编译到相应的/WEB-INF/classes文件夹中
在test目录下建立包文件,包名称和我们需要测试的类一样,这样编译之后,会把test目录下生成的class文件和src目录下生成的class文件都放在bin目录下的com/weiyuan/test目录下
例如我们要测试cacluate中的add方法,对应的测试方法就像testAdd()开头
package com.weiyuan.test; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TestCalcuate { private Calcuate calcuate; /** * * 执行任何测试方法之前都会调用该方法 * */ @Before public void setUp(){ calcuate = new Calcuate(); } /** * 为了兼容junit3 * 按照testXX方法命名 * public int (int a,int b){ * */ @Test public void testAdd(){ int result = calcuate.add(12, 20); Assert.assertEquals("加法有问题", result, 32); } }
在junit3中由于测试类继承了了TestCase方法,在调用的时候直接就使用了下面这种形式
@Test public void testAdd(){ int result = calcuate.add(12, 20); assertEquals("加法有问题", result, 32); }
为了能够兼容junit3,使用上面一样的方法,我们可以使用静态导入Assert类来解决上面的问题
package com.weiyuan.test; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate { private Calcuate calcuate; /** * * 执行任何测试方法之前都会调用该方法 * */ @Before public void setUp(){ calcuate = new Calcuate(); } /** * 为了兼容junit3 * 按照testXX方法命名 * public int (int a,int b){ * */ @Test public void testAdd(){ int result = calcuate.add(12, 20); assertEquals("加法有问题", result, 32); } }
接下来我们就可以测试
点击
绿色表示正常通过
表示有异常
接下来我们来看junit检查异常
package com.weiyuan.test; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate { private Calcuate calcuate; /** * * 执行任何测试方法之前都会调用该方法 * */ @Before public void setUp(){ calcuate = new Calcuate(); } /** * 为了兼容junit3 * 按照testXX方法命名 * public int (int a,int b){ * */ @Test public void testAdd(){ int result = calcuate.add(12, 20); assertEquals("加法有问题", result, 32); } @Test public void testDivide(){ int result = calcuate.divide(12, 0); assertEquals("触发有问题", result, 4); } }
我们在上面除法的时候被除数不能为0,这里肯定会抛出异常
导致上面的用例失败,如果我们要让该用例通过,可以采用下面的方法
标准的JUnit的org.junit.Test注解提供了一个expected属性,你可以用它来指定一个Throwble类型,如果方法调用中抛出了这个异常,这条测试用例就算通过了。
package com.weiyuan.test; import java.security.AlgorithmParameterGenerator; import java.security.AlgorithmParameters; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate { private Calcuate calcuate; /** * * 执行任何测试方法之前都会调用该方法 * */ @Before public void setUp(){ calcuate = new Calcuate(); } /** * 为了兼容junit3 * 按照testXX方法命名 * public int (int a,int b){ * */ @Test public void testAdd(){ int result = calcuate.add(12, 20); assertEquals("加法有问题", result, 32); } @Test(expected=ArithmeticException.class) public void testDivide(){ int result = calcuate.divide(12, 0); assertEquals("触发有问题", result, 4); } }
这样运行的时候就可以通过测试
接下来我们讲讲性能测试的timeout
package com.weiyuan.test; import java.security.AlgorithmParameterGenerator; import java.security.AlgorithmParameters; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate { private Calcuate calcuate; /** * * 执行任何测试方法之前都会调用该方法 * */ @Before public void setUp(){ calcuate = new Calcuate(); } /** * 为了兼容junit3 * 按照testXX方法命名 * public int (int a,int b){ * */ @Test public void testAdd(){ int result = calcuate.add(12, 20); assertEquals("加法有问题", result, 32); } @Test(expected=ArithmeticException.class) public void testDivide(){ int result = calcuate.divide(12, 0); assertEquals("触发有问题", result, 4); } /** * 如果测试方法执行超过200毫秒 * 就会报错 * */ @Test(timeout=200) public void testTimeout(){ try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
我们来运行下
标签:junit 开头 rac ret ima turn exce http 笔记
原文地址:https://www.cnblogs.com/kebibuluan/p/8906027.html