单元测试——基于JUnit
来源:互联网 发布:多益网络待遇五险一金 编辑:程序博客网 时间:2024/05/16 19:04
一、安装JUnit.jar
https://github.com/junit-team/junit4/wiki/Download-and-Install
二、JUnit的介绍 (一)
①、继承于TestCase类的表示一个单元测试类。
②、添加的测试方法必须以test开头,并且必须是public修饰符。(该测试函数不需要人为调用)
③、JUnit的生命周期
setUp(): 初始化被测试的对象
↓
各种测试方法 进行测试
↓
tearDown() 进行扫尾工作
④、JUnit的测试函数
assertEquals():判断两个值或者对象是否相同。第一个参数表示期望值,第二个参数表示测试生成的实际值
assertTrue() or assertFalse() :判断某个值是否为true或者false
assertNull() or assertNotNull():判断某个值是否为null
assertSame() or assertNotSame():判断两个对象是否为同一个对象
fail方法:(与assert不同之处在于,错误时候的异常是自定义的)
failNotEquals:有三个参数,第一个参数表示当错误时候的自定义的参数信息。第二个参数表示期望值。第三个参数表示测试生成的值。如果not equals 则抛异常。
failSame or failNotSame:同理。
failNull or failNotNull:同理
测试举例:
被测试类Adder:用来将两个整数相加
public class Adder{ public int add(int a,int b){ return a + b; }}测试类AdderTest
1、继承TestCase,然后重写setUp()和tearDown();
2、在setUp()创建测试类,创建测试方法testAdd()
public class AdderTest extends TestCase {Adder mAdder;@Overrideprotected void setUp() throws Exception {// TODO Auto-generated method stubsuper.setUp();mAdder = new Adder();}public void testAdd(){assertEquals(7, mAdder.add(3, 4));assertEquals(10, mAdder.add(5, 5));assertEquals(-1, mAdder.add(5, 6));//该行错误,报错}@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubsuper.tearDown();mAdder = null;}}然后发现测试方法的第三行出现了错误,错误的log
junit.framework.AssertionFailedError: expected:<-1> but was:<11>
<-1>表示期望值。
<11>表示测试的实际值。
两个值不一致,导致错误。并且log页显示红色,如果成功显示绿色。
三、JUnit介绍(二)
需求:有时候我们需要测试多个类,有没有什么方法能够将多个测试类同时运行呢?
TestSuite:表示执行多个测试类的集合。
JUnit4TestAdapter:用来包装测试类。然后装入到TestSuit的集合中。
举例:首先我们建立了Adder类(加法)、Diver类(减法)。并分别创建他们的测试类。
public class MathSuite {//①、创建类,并创建public static Test suit()方法,测试时候会自动调用该方法public static Test suit(){//②、创建测试集合类TestSuite suite = new TestSuite();//③、将测试类用JUnit4TestAdapter封装并加入TestSuitesuite.addTest(new JUnit4TestAdapter(AdderTest.class));suite.addTest(new JUnit4TestAdapter(Diver.class));return suite;}}
四、实践
背景:家庭使用电费每月标准
当使用1~10度电则按1元/度收费。
当使用11~25度电按2 元/度收费。
当使用25~40按3 元/度收费
当超过40 按4 元/度收费。
以此建立价格:
public class ElectricCharge {public int total(int count){if (count > 1 && count <10){return 1 * count;}else if (count > 10 && count < 25){return 2 * count;}else if (count > 25 && count <40){return 3 * count;}else {return 4 * count;}}}然后进行单元测试:
public class ElectricChargeTest extends TestCase{ElectricCharge mElectricCharge;@Overrideprotected void setUp() throws Exception {// TODO Auto-generated method stubsuper.setUp();mElectricCharge = new ElectricCharge();}public void testTotal(){//该行报错:因为当传入 负数 的时候返回值一律为0assertEquals(-1,mElectricCharge.total(-1));assertEquals(3*1, mElectricCharge.total(3));//该行报错:因为没有对 当 count == 10的时候做判断assertEquals(10*1, mElectricCharge.total(10));assertEquals(2*12, mElectricCharge.total(12));}@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubsuper.tearDown();mElectricCharge = null;}}修改回来:
public int total(int count){if (count > 1 && count <= 10){return 1 * count;}else if (count > 10 && count <= 25){return 2 * count;}else if (count > 25 && count <= 40){return 3 * count;}else if (count > 40){return 4 * count;}return 0;}
0 0
- 单元测试——基于JUnit
- 单元测试之道——基于junit的java单元测试 的读书笔记与思考
- JUnit——单元测试利器
- android基础-单元测试—junit
- junit基于注解的单元测试
- 基于spring的junit单元测试
- JUnit Annotation——JUnit单元测试中批注@详解
- android学习——android 单元测试 junit
- java单元测试入门——JUnit
- Java单元测试工具——Junit
- Junit —— 单元测试工具基本使用
- 单元测试三叉戟—JUNIT,DBUNIT,UNITILS
- 单元测试三叉戟—JUNIT,DBUNIT,UNITILS
- 基于 JUnit 的全局单元测试程序
- 基于 JUnit 的全局单元测试程序
- 基于 JUnit 的全局单元测试程序
- 基于 JUnit 单元测试的原理及示例
- SpringBoot框架下基于Junit的单元测试
- Android之TypedValue.applyDimension()方法的使用
- linux---TOP命令下参数说明
- WebView获取网页
- 在循环过程中删除List的元素
- python基础-区分数组、矩阵
- 单元测试——基于JUnit
- Invalid number format for port number
- 13 数据库 总结
- PHP输出缓冲区
- linux学习笔记之 dpkg和apt区别
- 累积梯度下降,随机梯度下降,基于mini-batch 的随机梯度下降
- 【BZOJ 3262】陌上花开(CDQ分治+树状数组)
- 13 SQLiteOpenHelper SQLiteDatabase详解
- VC++6.0 Win32应用程序 如何添加窗体 ------阿冬专栏