java单元测试---junit简介
来源:互联网 发布:淘宝店推广方式 编辑:程序博客网 时间:2024/05/18 02:22
unit是一套开源的测试框架,各个语言的单元测试框架大部分都是基于这个框架演变而来,单元测试即是最小的可测试单元,例如c语言中的函数(cunit),和java中类(junit)
所以java中单元测试简称junit
首先编写要测试的类
package com.leige.test;/** * @author * 首先编写要测试来得类 * */public class Calc { public int add(int x,int y){ System.out.println("相加为==="+(x+y)); return x+y; }}
1:junit中注解的解释及使用:
测试过程,解释依然在代码中:
package com.leige.test;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;/** * @author *简介java单元测试,junit操作 * */public class CalcTest {//简介junit注解使用/* 需要注意的是,beforeclass和afterclass必须要由static修饰 * 而其他方法不必 * * */ @BeforeClass //这个方法是类中所有方法执行之前执行,所以经常在这个方法中加载配置 public static void beforeCalc(){ System.out.println("在类中所有方法之前执行...."); } //被测试方法执行之前 @Before public void before(){ System.out.println("在被测试方法之前执行...."); } @Test public void addTest(){ new Calc().add(1, 3); } @After //被测试方法执行之后执行 public void after(){ System.out.println("在被测试方法执行之后执行....."); } //在类中所有方法执行之后执行 //@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接 @AfterClass public static void afterClass(){ System.out.println("在类中所有方法执行之后执行....."); }}
2:junit的参数化测试
比如当我们要使用,大量的测试数据来测试一个算法的性能或者其正确性是,我们不可能一个个输入测试数据,所以需要用到参数化测试,需要自动导入参数:规范如下:
package com.leige.test;import static org.junit.Assert.*;import java.util.Arrays;import java.util.Collection;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters;/** * @author * 批量参数化测试数据 * *//** * @author * */@RunWith(Parameterized.class)public class CalcParameters { private int x=0; private int y=0; private int expected=0; /* * 1.更改默认的测试运行器为RunWith(Parameterized.class) * 2.声明变量来存放预期值 和结果值 * 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰 * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值 */ //实现将值赋给形参 public CalcParameters(int x, int y, int expected) { this.x = x; this.y = y; this.expected = expected; } /** * @return * 提供参数 */ @Parameters public static Collection<Object[]> t() { //这里也可以从文件中读取测试数据,也可以自己生成 return Arrays.asList(new Object[][]{ {1,2,3}, {2,2,4}, {2,1,3}, {2,5,7} }) ; } /**执行测试 * */ @Test public void testAdd() { assertEquals(expected, new Calc().add(x,y)); }}
3:junit中的组合测试,因为不是十分理解,我暂时没有用过,所以先写在这里,作为记录参考别人的博客:
JUnit 中所有的测试方法都是由测试运行器负责执行。JUnit单元测试提供了一个默认的测试运行器BlockJunit4ClassRunner,但是并没有限制必须使用默认的运行器。/*我们可以根据需要定制自己的运行器,只要继承自org.junit.runner.Runner即可。一般情况下,默认测试运行器可以应对绝大多数的单元测试要求。当使用JUnit提供的一些高级特性(如实现参数化测试、实现打包测试或者针对特殊需求定制JUnit测试方式)时,则需要显示地声明测试运行器。如@RunWith(CustomerTestRunner.class)。*/import static org.junit.Assert.*;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.Suite;import org.junit.runners.Suite.SuiteClasses;/** * @author 都市桃源 * */@RunWith(Suite.class)@SuiteClasses({JunitExceptionTest.class,Junit4ParameterTest.class,JunitTimeoutTest.class})public class JUnit4SuiteTest { @Test public void allTest(){ assertNotNull(null); }}//JUnit 为我们提供了打包测试的功能,将所有需要运行的测试用例集中起来,一次性地运行所有测试用例,大大地方便了我们的//测试工作。//通过@RunWith注解指定一个Suite测试运行器,另外通过@SuiteClasses注解将所有需要进行测试的用例打包起来。/* * 1.测试套件就是组织测试类一起运行的 * * 写一个作为测试套件的入口类,这个类里不包含其他的方法 * 更改测试运行器Suite.class * 将要测试的类作为数组传入到Suite.SuiteClasses({}) */
最好,建议测试代码和源码分开,这样在软件的开发完成时就可以将测试代码完全剔除,作为产品,交付给客户了,如果和源码放在混合在一起,会显得很不清晰,也不利于后期维护
0 0
- java单元测试---junit简介
- JUnit单元测试--JUnit简介
- JUnit和单元测试入门简介
- JUnit和单元测试入门简介
- JUnit和单元测试入门简介
- JUnit和单元测试入门简介
- JUnit和单元测试入门简介
- Junit单元测试基础知识入门简介
- Java: 单元测试 JUnit
- java junit 单元测试
- java Junit单元测试
- java单元测试(Junit)
- java中Junit单元测试
- junit java 单元测试
- Junit Java单元测试
- Java JUnit单元测试
- 深入java--单元测试JUnit
- java单元测试工具--JUnit
- HDU 5690 All X(2016"百度之星" - 初赛(Astar Round2A)1001)
- android runtime and java virtual machine
- 客户端和服务端对异常的不同处理态度【JFinal】
- 设计模式 - Composite模式
- Lua的function、closure和upvalue
- java单元测试---junit简介
- FindBugs入门简介(eclipse安装使用实例)
- nodejs完整登陆交互
- hdoj1272【并查集】
- 第十三周项目53-纯虚函数
- composer注意的几个问题
- toggleClass的用法简介
- How to run 32-bit app in Ubuntu 14.04 64-bit?
- 解决表格中边框双线的问题