三分钟学会 Java 单元测试

前言:

此篇文章使用 Junit 4.0, 希望给无任何单元测试经验的开发者, 能在最短的时间内, 开展单元测试的工作◦

本文: 

学习 Junit 的测试框架是件非常容易的事,只需了解下列三件事:

1)     测试方法的宣告◦

2)     Junit 的生命周期◦

3)     断言的方法◦

I.           测试方法的宣告:

测试方法的宣告需遵循下列的规则:

a)     使用 @Test 将方法宣告为测试方法◦

b)     测试方法需为 public◦以确保可被 Junit 框架所调用◦

c)     测试方法需为 void 且无参数◦以确保各测试方法的独立性◦

import org.junit.Test;
import static org.junit.Assert.assertEquals;    

public class ExampleTest {

@Test

publicvoid thisIsATestMethod(){

assertEquals(5, 2 + 3);

}

@Test

public void thisIsAnotherTestMethod() {

WorldOrder newWorldOrder = new WorldOrder();

assertFalse(newWorldOrder.isComing());

}

}

II.         Junit 的生命周期:

Junit 的生命周期有下列主要的步骤:

Step 1) Junit 框架生成测试类; public class ExampleTest; 的对象◦

Step 2) Junit 框架调用测试对象中的 @Before 方法◦ 以设定测试环境, 如:生成被测对象; DefaultController( ); 或生成测试数据对象; SampleRequest()◦

Step 3) Junit 框架调用测试对象中的任一测试方法;

public void testProcessRequest() 或 public void testAddHandler()◦

因各测试方法均为独立, 所以Junit 框架先调用那个测试方法, 并不会影响各测试方法的测试结果◦

Step 4) Junit 框架调用测试对象中的 @After 方法◦ 以清除测试环境◦    

针对下一个测试方法, Junit 重复相同的生命周期 (步骤)◦

public class ExampleTest {

@Before

public void setLocaleForTests() {

  controller = new DefaultController();

  request = new SampleRequest();

  handler = new SampleHandler();

 }

@Test

public void testProcessRequest()  {

        Response response = controller.processRequest( request );

        assertNotNull( "Must not return a null response", response );

}

@Test

 public void testAddHandler() {

        RequestHandler handler2 = controller.getHandler( request );

        assertSame( "Controller.getHandler must return the samplehandler", handler2, handler );

    }

@After

}

III.       断言的方法:

JUnit assertions

Description

assertEquals

Asserts that two objects (or primitives) are equal

assertArrayEquals

Asserts that two arrays have the same items

assertTrue

Asserts that a statement is true

assertFalse

Asserts that a statement is false

assertNull

Asserts that an object reference is null

assertNotNull

Asserts that an object reference is not null

assertSame

Asserts that two object references point to the same instance

结论:

  Junit 的框架非常的容易使用◦ 然而, 如何有效率的开发 Junit 单元测试代码, 对敏捷开发而言, 绝对不是一件容易的事◦

后续将陆续探讨这方面的议题◦

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

RequestParam与RequestBod等参数注解简析

该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded和multipart/form-data编码的...

6201
来自专栏技术墨客

Spring核心——@Configuration与混合使用

在介绍Spring核心容器的系列文章中已经多次出现这个注解,从使用的角度来说可以把他理解为XML配置中的<beans>标签,但是两者肯定是不等价的。

1353
来自专栏cloudskyme

jbpm5.1介绍(8)

Junit测试或流程 下面的示例中使用的是或流程,看如下流程图 ? 判断节点的值是大于0,大于10还是大于20 看测试程序 public void testI...

3305
来自专栏杂烩

cxf webservice整合spring 原

     前端建模:CXF 提供了前端建模的概念,允许您使用不同的前端 API 来创建 Web 服务。API 允许您使用简单的工厂 Bean 并通过 JAX-W...

1092
来自专栏阿杜的世界

Restful: Spring Boot with Mongodb

继续之前的dailyReport项目,今天的任务是选择mongogdb作为持久化存储。

942
来自专栏生信宝典

Python学习教程(五)

作业(二) 将 “作业(一)” 中的程序块用函数的方式重写,并调用执行 def func(para1,para2,…): func(para1,para2,…)...

2099
来自专栏Jerry的SAP技术分享

Spring MVC能响应HTTP请求的原因?

一个Spring MVC的项目文件里,开发人员没有开发自己的Servlet,只通过注解@RequestMapping定义了方法home能响应发向 /mvc/te...

772
来自专栏别先生

JDBC操作数据库,第一:jsp插入mysql数据库,坎坷摸索分享

JSP连接数据库,坎坷摸索了好久,现在终于做好了,分享一下,希望对更多热爱编程学习的人有所帮助!!!谢谢  第一:首先准备的就是已经安装好Mysql,这里不做...

2607
来自专栏阿杜的世界

RESTful by Spring Boot with MySQL

现在的潮流是前端承担越来越多的责任:MVC中的V和C,后端只需要负责提供数据M,但是后端有更重要的任务:高并发、提供各个维度的扩展能力(负载均衡、数据表切分、服...

933
来自专栏程序猿DD

【译】Spring 官方教程:创建批处理服务

原文:Creating a Batch Service 译者:Mr.lzc 校对:lexburner 本指南将引导你完成创建基本的批处理驱动解决方案的过程。 你...

5477

扫码关注云+社区

领取腾讯云代金券