JUnit测试框架
在Java语言中,可以通过JUnit框架进行单元测试,JUnit是由“Erich Gamma”和“Kent Beck”创建的,他们也是在“设计模式”和“极限编程”领域最伟大的作者之一。
单元测试的实现是很简单的,可以认为它只是判断在某一个时刻,程序运行的值和预期的值是否一致,但在实际的应用的时候是很灵活的,在此介绍JUnit中的一些断言以及JUnit测试框架的使用,使读者能够快速的进入单元测试的领域,更快的进行开发。 断言
JUnit提供了一些辅助函数,用于帮助开发人员确定某些被测试函数是否工作正常。通常而言,把所有这些函数统称为断言,断言是单元测试最基本的组成部分。
通常每种类型的断言都有两种形式,一种包含接收一个message参数,例如“static public void assertTrue(String message, boolean condition)”,message表示出错时的提示信息,另外一个则没有message参数。
下面将分别介绍JUnit框架Assert类中的断言以及部分实现,每个函数的实现方法都为Assert类中定义的方法,读者也可以查看JUnit框架Assert类的实现代码。
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);
}
assertTrue与assertFalse断言
assertTrue与assertFalse可以判断某个条件是真还是假,如果和预期的值相同则测试成功,否则将失败,assertTrue的定义如下:
staticpublic void assertTrue(String message, boolean condition) {
if (!condition)
fail(message);
}
assertNull与assertNotNull断言
assertNull与assertNotNull可以验证所测试的对象是否为空或不为空,如果和预期的相同则测试成功,否则测试失败,assertNull定义为:
staticpublic void assertNull(String message, Objectobject) {
assertTrue(message,object == null);
}
assertSame与assertNotSame断言
assertSame和assertEquals不同,assertSame测试预期的值和实际的值是否为同一个参数(即判断是否为相同的引用)。assertNotSame则测试预期的值和实际的值是不为同一个参数。assertSame的定义为:
static publicvoid assertSame(String message, Object expected, Object actual) {
if (expected== actual)
return;
failNotSame(message, expected, actual);
}
fail断言
“fail”断言能使测试立即失败,这种断言通常用于标记某个不应该被到达的分支。例如assertTrue断言中,condition为false时就是正常情况下不应该出现的,所以测试将立即失败,fail的定义为:
staticpublic void fail(String message) {
throw new AssertionFailedError(message);
}