Java笔记18:JUnit单元测试
1 从http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22junit%22%20AND%20a%3A%22junit%22
上下载最新的junit包。
2 建立名为JunitTest的JavaProject,把下载的junit-4.12.jar添加到工程中
3 建立com.abc的package,在该package下建立Calculator.Java,用来实现加减乘除运算。
- package com.abc;
- publicclass Calculator {
- publicint add(inta,intb) {
- returna +b;
- }
- publicint minus(inta,intb) {
- returna - 1; //故意写错,方便测试
- }
- publicint divide(inta,intb) {
- returna /b;
- }
- publicint mul(inta,intb) {
- returna *b;
- }
- }
4 创建测试类
(1)右键点击要测试的类Calculator.java,“New”,“JUnit Test Case”
(2)这里有四个方法可选:setUpBeforeClass()和setUp()是用于测试之前的准备工作,区别在于setUpBeforeClass()是针对整个类的,只执行一次,setUp()是针对方法的,每个测试方法被执行之前都会先执行setUp();tearDownAfterClass()和tearDown()是用于测试之后释放资源的,区别在于tearDownAfterClass()是针对整个类的,只执行一次,tearDown()是针对方法的,每个测试方法被执行后都会执行tearDown()。
这里勾选setUpBeforClass()。
(3)这里可以选择要测试的方法。把四个运算方法都选上。
(4)点击finish后生成的代码如下图所示
(5)编写测试类代码
- package com.abc;
- importstatic org.junit.Assert.*;
- importorg.junit.Before;
- importorg.junit.Test;
- publicclass CalculatorTest {
- Calculatorcal;
- @Before
- publicvoid setUp()throws Exception{
- cal =newCalculator();
- }
- @Test
- publicvoid testAdd() {
- intres =cal.add(20, 10);
- assertEquals("加法错误",res, 30);
- }
- @Test
- publicvoid testMinus() {
- intres =cal.minus(20, 10);
- assertEquals("减法错误",res, 10);
- }
- @Test
- publicvoid testDivide() {
- intres =cal.divide(20, 10);
- assertEquals("除法错误",res, 2);
- res =cal.divide(20, 0);
- }
- @Test
- publicvoid testMul() {
- intres =cal.mul(20, 10);
- assertEquals("乘法错误",res, 200);
- }
- }
5 开始测试
右键点击Calculator,“Run As”,“JUnitTest”,报initializationError的错误
这个错误是因为少了junit-4.12.jar的两个依赖包:hamcrest-core-1.3.rc2.jar和hamcrest-library-1.3.rc2.jar。
从网络上下载这两个包并添加到工程中:
重新进行单元测试,结果如下:
上述结果显示了两个方法是正确的,一个方法是计算结果错误,另一个方法是编译错误。
点击testMinus,可以查看错误信息为计算结果应该为10却计算成了19。
点击testDivide,可以看到错误信息为除数不能为0。
最新文章
- 【bzoj1014】 JSOI2008—火星人prefix
- hdu 2042 - 不容易系列之二
- linux 安装GCC
- [转] iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- Spring mvc interceptor配置拦截器,没有登录跳到登录页
- Kendo UI开发教程(6): Kendo DataSource 概述
- 插件管理工具 Alcatraz
- 看懂c/c++ 函数、指针、数组定义
- rotate image(旋转数组)
- Gradle part1 HelloWorld
- IBase<;T>;
- SpringCloud-day08-Hystrix断路器
- ajax---获取XMLHttpReuquest 对象
- tkinter简单打开网址 + 执行系统命令
- word-break:break-all; 和 word-wrap:break-word 换行
- ssh基础配置大全
- HDU 4763 Theme Section(KMP+枚举公共前后缀)
- unity 获得子节点
- 蓝桥杯 生命之树【树状dp】
- linux 命令绿色安装