JUnit学习笔记
来源:互联网 发布:thinkphp旅游网站源码 编辑:程序博客网 时间:2024/05/03 04:54
首先下载JUnit所需的jar包,这里我把3和4的jar包都下了一份。
新建一个java工程,在BuildPath里引入jar包并关联源码:
在src下建junit包,新建Calc类:
package junit;public class Calc {public int plus(int a, int b){return a + b;}public int divide(int a, int b){return a / b;}}
计算器实现了加法和除法,然后新建Source Folder,与src下的目录相同,建一个junit的包,包下新建CalcTest类继承TestCase类。
其实包路径,包名和类名这些都没有强制的规定,只是一种约定,新建一个叫test的Source Folder是为了将测试类和源码分离,相同的包名和类名后加Test可以让我么方便的找到相应类的测试类。
好了继续我们的CalcTest,先来测试plus方法。新建一个方法testAdd,方法必须是public void 的无参数方法,方法名以test开头,这是必须的,否则写的方法不会被测试。代码如下:
package junit;import junit.framework.TestCase;public class CalcTest extends TestCase {public void testAdd() {Calc calc = new Calc();int result = calc.plus(3, 5);assertEquals(8, result);}}
assertEquals方法可以接收各种类型的参数,不光是int型的。这个方法是比较两个参数是否有相同的值,其中第一个参数是你期望的值,第二个参数是实际得出的值。好了,运行一下看看。点右键,Run as => JUnit test,结果如下:
绿色的对勾表示期望值和实际得出的值是一样的,就是说count的值是8,那要是我们写成这样呢
assertEquals(9, count);
出错了,包括错误原因都很详细。
然后我们把参数改回正确的,再测试一下divide方法。
public void testDivide(){Calc calc = new Calc();int result = calc.divide(10, 3);assertEquals(3, result);}
结果很简单,就不截图了。至此Calc的两个方法都测试完了。
这里我们发现一个问题,每一个方法里面都会创建一个Calc对象,这显然是一项重复的动作。我们当然不能允许这样的事情存在。这时就该setUp方法出场了。
先声明一个类变量:
private Calc calc;
然后右键,Source,重写setUp方法。
在方法里面进行calc的初始化:
@Overrideprotected void setUp() throws Exception {calc = new Calc();}
这样JUnit在进行每个测试方法之前都会执行一下setUp方法进行calc的初始化。注意是在执行每个测试方法之前都会执行一次,因为每执行一个测试方法都会生成一个CalcTest对象。所以你定义的一些非static的类变量在每个方法之间是不能共用的。
现在每个测试方法的初始化工作都可以扔掉了。代码像下面这样:
package junit;import junit.framework.TestCase;public class CalcTest extends TestCase {private Calc calc;@Overrideprotected void setUp() throws Exception {calc = new Calc();}public void testAdd() {int result = calc.plus(3, 5);assertEquals(8, result);}public void testDivide(){int result = calc.divide(10, 3);assertEquals(3, result);}}
有开始前就有结束后,tearDown方法就是在每个测试方法执行完毕后进行的善后工作,这里不再多说,大家试一下就知道。
有时候我们要执行多个测试类,那应该怎么做呢?显然一个一个点测试不是个好方法。我们可以在测试类的包上点右键,Run as => JUnit test,这样就会执行包下所有的测试类。那如果要执行其中的几个呢?这下就该TestSuit(测试套件)出场了。
我们把CalcTest复制一份,命名为CalcTest2吧,来模拟有多个测试类。然后新建一个类AllTest,写一个public static 的方法,名为suite,返回一个Test对象,这是必须的。代码如下:
package junit;import junit.framework.Test;import junit.framework.TestSuite;public class AllTest {public static Test suite() {TestSuite suite = new TestSuite(AllTest.class.getName());suite.addTestSuite(CalcTest.class);suite.addTestSuite(CalcTest2.class);return suite;}}
方法中我们定义了一个suite对象,并用addTestSuite方法将两个测试类都加入到suite中,最后返回suite对象。好了,执行一下:
两个测试类的都执行完了。suite对象还有addTest方法,可以添加一个Test对象,所以TestSuite是很灵活的,大家试一下。
JUnit3的最基础内容先到这里,下面接着看下JUnit4。
未完待续……………………
- Junit 学习笔记
- JUnit学习笔记
- • Junit学习笔记
- JUnit学习笔记
- Junit学习笔记
- Junit学习笔记1
- Junit学习笔记
- Junit学习笔记
- Junit学习笔记_1
- JUnit Gossip学习笔记
- Junit学习笔记
- JUnit学习笔记
- JUnit学习笔记
- JUnit学习笔记
- junit学习笔记一
- Junit学习笔记
- Junit 4 学习笔记
- JUnit之学习笔记
- (转载)IOS编程教程(十):使用StoryBoard来建立导航控制器和表视图
- 数组控件绑定事件的方法
- 图片处理--压缩图片
- 三层架构——实践篇(小Demo,大道理)
- Android实现界面跳转
- JUnit学习笔记
- Andriod中textview垂直水平居中及LinearLayout内组件的垂直布局
- Linear Layout(线性布局)
- Test
- 女人需谨记的十六条健康戒律
- linuxi学习curses(1)
- 背完这444句,你的口语绝对不成问题了
- c++ string double 互转
- linuxi学习curses(2) 时间显示器