Fork me on GitHub

JUnit测试

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);  

 }  

其中,expected为用户期望某一时刻对象的值,actual为某一时刻对象实际的值。如果这两值相等的话(通过对象的equals方法比较),说明预期是正确的,也就是说,代码运行是正确的。assertEquals还提供了其它的一些实现,例如整数比较,浮点数的比较等等。

assertTrue与assertFalse断言

assertTrue与assertFalse可以判断某个条件是真还是假,如果和预期的值相同则测试成功,否则将失败,assertTrue的定义如下:
其中,expected为用户期望某一时刻对象的值,actual为某一时刻对象实际的值。如果这两值相等的话(通过对象的equals方法比较),说明预期是正确的,也就是说,代码运行是正确的。assertEquals还提供了其它的一些实现,例如整数比较,浮点数的比较等等。

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);  

 } 

当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是位于同一个测试类中的其他测试将会继续运行。
posted @ 2020-10-23 18:32  小丸子、  阅读(117)  评论(0编辑  收藏  举报