Junit单元测试
一.单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。[这段话引用于百度百科]
单元测试不是为了证明您是对的,而是为了证明您没有错误,单元测试主要是用来判断程序的执行结果与自己期望的结果是否一致。关键是在于所用的测试用例(Test Case) 。每编写完一个函数之后,都应该对这个函数的方方面面进行测试。
二.环境配置
对Java代码进行单元测试,首先需要安装JUnit 插件。
1.在elipse安装JUnit插件步骤
打开eclipse,在项目上右键,点击build path,->Add library->Junit->juint4即可
2.使用JUnit插件
在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。
三.找了一些关于单元测试比较优秀的博客
参见地址如下:
http://www.cnblogs.com/charliePU/p/5383126.html
http://blog.csdn.net/happylee6688/article/details/37962283
http://blog.csdn.net/happylee6688/article/details/38059833
http://blog.csdn.net/happylee6688/article/details/38069761
http://blog.csdn.net/happylee6688/article/details/38225175
四.Junit注解
JUnit4通过注解的方式来识别测试方法。主要注解有如下:
1.@BeforeClass 全局只会执行一次,而且是第一个运行
2.@Before 在测试方法运行之前运行
3.@Test 测试方法
4.@After 在测试方法运行之后允许
5.@AfterClass 全局只会执行一次,而且是最后一个运行
6.@Ignore 忽略此方法
五.Junit各种断言用法
1.assertEquals(这个是最常用的断言)
比较实际的值和用户预期的值是否一样,assertEquals在JUnit中有很多不同的实现,以参数expected和actual都为Object类型的为例,assertEquals定义为:
static public void assertEquals(String message, Object expected, Object actual) { if (expected== null&& actual == null) return; if (expected != null&& expected.equals(actual)) return; failNotEquals(message, expected, actual); }
其中,expected为用户期望值,actual为实际的值。如果这两值相等的话(通过对象的equals方法比较),说明预期是正确的,也就是说,代码运行是正确的。assertEquals还提供了其它的一些实现,例如整数比较,浮点数的比较等等。
2.assertTrue与assertFalse
assertTrue与assertFalse可以判断某个条件是真还是假,如果和预期的值相同则测试成功,否则将失败,assertTrue的定义如下:
staticpublic void assertTrue(String message, boolean condition) { if (!condition) fail(message); }
“condition”表示要测试的状态,如果“condition”的值为false,则测试将会失败。
3.assertNull与assertNotNull
assertNull与assertNotNull可以验证所测试的对象是否为空或不为空,如果和预期的相同则测试成功,否则测试失败,assertNull定义为:
staticpublic void assertNull(String message, Objectobject) { assertTrue(message,object == null); }
其中,object就是要测试的对对象,如果object为空,该测试成功,否则失败。
4.assertSame与assertNotSame
assertSame和assertEquals不同,assertSame测试预期的值和实际的值是否为同一个参数(即判断是否为相同的引用)。assertNotSame则测试预期的值和实际的值是不为同一个参数。assertSame的定义为:
static publicvoid assertSame(String message, Object expected, Object actual) { if (expected== actual) return; failNotSame(message, expected, actual); }
而assertEquals则判断两个值是否相等,通过对象的equals方法比较,可以相同引用的对象,也可以不同。
具体完成JUnit的单元测试样例可见博客:http://blog.csdn.net/wkw1125/article/details/51966967