转载

java单元测试和集成spring

编辑推荐:
本文来自csdn,本文介绍了在一般java项目以及基于spring的java项目中怎么去做单元测试的相关内容。

在我们编写项目过程中,经常会需要进行代码测试,那是不是在编写一个main方法之后,然后编写各种的测试代码。这样做,显然是不合适的也是很不专业的。那怎么办呢?今天我们来聊下junit(单元测试)。

为了后期测试基于spring的单元测试,我们直接新建spring工程。

java单元测试和集成spring

新建之后,我们先讲一般在java项目中怎么去做单元测试。

我们先定义一个实体User

java单元测试和集成spring

在service包中新建一个接口,在接口中定义一个方法,方法的返回值就是返回一个用户对象

java单元测试和集成spring

有有了接口,对应这我们去编写它的实现类

java单元测试和集成spring

这里面就是一个简单的业务逻辑,如果id为1则返回一个User对象,否则返回一个空值。在真实的项目中,这边肯定不是这么简单的业务,它对应着的肯定是调用持久层相关的方法,进行业务逻辑的实现。我们这边只是为了讲解单元测试,所以例子相对简单。

service实现已经写好,那我们下步做的事情就是对它进行单元测试。

首先,新建测试类

java单元测试和集成spring

我们这边新建跟src一样类型的源文件,名字取为test。为什么这么做?也就是这样做的好处是什么?1.层次清晰,项目代码跟测试代码分开,条目很清晰。2.方便管理。

java单元测试和集成spring

新建好test源包之后,我们再来新建测试类。怎么新建呢?鼠标右击你要测试的类,点击new按钮,再点击右侧的other,在搜索框中输入junit。选择Junit Test Case,点击next,出现如下界面

java单元测试和集成spring

点击Browse按钮选择,我们新建的test源目录,勾选junit4

java单元测试和集成spring

点击next,它会自动扫描你测试类中所有的方法。

java单元测试和集成spring

选中你想测试的方法,点击finish。

java单元测试和集成spring

由此我们的单元测试新建就基本完成了。

注意:我们这边引用的是junit4,那有些小伙伴加的junit3。那他们的区别是什么呢?junit3需要继承TestCase这个类,而我们junit4不需要。

java单元测试和集成spring

import static org.junit.Assert.*; 断言(不详解,可百度)

基本注解

@Test:将一个普通的方法修饰成为一个测试方法,可以接受异常

@Test(expected=XX.class)? 接受异常

@Test(timeout=毫秒)?? 定时结束

@BeforClass:它会在所有的方法运行前被执行,只执行一次,static修饰,用来加载配置文件

@AfterClass:它会在所有的方法运行结束后被执行,static修饰,用来释放资源

@Before:会在每一个测试方法被运行前执行一次

@After:会在每一个测试方法运行后被执行

@Ignore:所修饰的方法会被测试运行器忽略

@RunWith:可以更改测试运行器 只要你的测试器继承org.junit.runner.Runner

演示如下:

java单元测试和集成spring

右击运行选择Junit Test

显示结果:

java单元测试和集成spring

那下面我们来结合案例来测试下我们的简单Servcie

java单元测试和集成spring

双击我们要测试的方法名,右击运行Junit Test,首先测试面板不报错。绿色代表程序无错。红色代表程序出错,根据出错信息,查找错误所在地,然后进行修改。

左边的Runs:1/1 表示你运行了几个Test测试方法。 Errors:0 表示有多少个错误。Failures:0 表示使用断言的时候,为期望我达到的值的方法有几个。

java单元测试和集成spring

控制台打印结果

java单元测试和集成spring

至此我们普通的单元测试基本用法已经讲完。

那基于spring的单元测试怎么弄呢?(这边讲解是针对有spring基础的人群)

首先加载spring的jar包

spring-test-4.0.4.RELEASE(注意版本)

commons-logging-1.2.jar

在applicationContext.xml中,扫描service实现包

<context:component-scan base-package="service.impl"></context:component-scan>

在UserServiceImpl实现类上使用springmvc 注解@Service("userService")

编写spring单元测试,点击运行。

java单元测试和集成spring

@RunWith(SpringJUnit4ClassRunner.class)? 上面已做介绍。

@ContextConfiguration(locations={"classpath:applicationContext.xml"})加载配置文件,locations参数是一个数组,可以加载多个,配置文件。

@Resource 自动注入Ioc容器的对应的bean。

@Test 我们的测试方法。

junit的套件测试:

当我们新建了大量的测试类,我们不可能当程序出现问的时候,再一个一个的打开类然后点击一个一个的方法吧。那这边就可以用到junit的套件测试。

在我们的测试包中,点击右击新建Junit Test Suit,选择我们所有的测试类,点击finish

java单元测试和集成spring

点击运行即可,就达到我们一次测试所有测试类的目的了。

当然,junit 还有很多强大的功能,比如多参数测试等等。。。希望各位小伙伴能够愉快的玩耍,此次讲解只是最基础的用法。大神绕过。。。

但是,我们junit也不是万能的,使用junit进行单元测试,只是证明了你的程序无错,并没有证明你的程序就是对的。

原文  http://www.uml.org.cn/Test/201903143.asp
正文到此结束
Loading...