转自: http://vga.52hardware.com/market/200801/1429903.html
为什么需要单元测试
这是应用非常广泛的一个断言,它的作用是比较实际的值和用户预期的值是否一样,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还提供了其它的一些实现,例如整数比较,浮点数的比较等等。
assertTrue与assertFalse断言
assertTrue与assertFalse可以判断某个条件是真还是假,如果和预期的值相同则测试成功,否则将失败,assertTrue的定义如下:
staticpublic void assertTrue(String message, boolean condition) {
if (!condition)
fail(message);
}
“condition”表示要测试的状态,如果“condition”的值为false,则测试将会失败。
assertNull与assertNotNull断言
assertNull与assertNotNull可以验证所测试的对象是否为空或不为空,如果和预期的相同则测试成功,否则测试失败,assertNull定义为:
staticpublic void assertNull(String message, Objectobject) {
assertTrue(message,object == null);
}
其中,object就是要测试的对对象,如果object为空,该测试成功,否则失败,是不是很简单。
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方法比较,可以相同引用的对象,也可以不同。
fail断言
“fail”断言能使测试立即失败,这种断言通常用于标记某个不应该被到达的分支。例如assertTrue断言中,condition为false时就是正常情况下不应该出现的,所以测试将立即失败,fail的定义为:
staticpublic void fail(String message) {
throw new AssertionFailedError(message);
}
当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是位于同一个测试类中的其他测试将会继续运行。