关闭

Java的单元测试和集成spring单元测试

标签: junitspring单元测试
2284人阅读 评论(0) 收藏 举报
分类:

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

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

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

我们先定义一个实体User

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

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

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

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

首先,新建测试类

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

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

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

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



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

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

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



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

基本注解
    @Test:将一个普通的方法修饰成为一个测试方法,可以接受异常
            @Test(expected=XX.class)  接受异常
            @Test(timeout=毫秒)   定时结束
    @BeforClass:它会在所有的方法运行前被执行,只执行一次,static修饰,用来加载配置文件
    @AfterClass:它会在所有的方法运行结束后被执行,static修饰,用来释放资源
    @Before:会在每一个测试方法被运行前执行一次
    @After:会在每一个测试方法运行后被执行
    @Ignore:所修饰的方法会被测试运行器忽略
    @RunWith:可以更改测试运行器 只要你的测试器继承org.junit.runner.Runner

演示如下:


右击运行选择Junit Test

显示结果:


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


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

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


控制台打印结果


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

那基于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单元测试,点击运行。


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

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

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

@Test 我们的测试方法。


junit的套件测试:

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

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


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

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

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








0
0
查看评论

Spring框架下的单元测试方法

    介绍在Spring的框架下,做单元测试的两种办法。    一、使用spring中对Junit框架的整合功能    除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:&amp;lt;...
  • bruce128
  • bruce128
  • 2013-08-06 15:36
  • 49873

聊聊单元测试(三)——Spring Test+JUnit完美组合

这两天做Web开发,发现通过Spring进行对象管理之后,做测试变得复杂了。因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得。如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦。如果单独去写一个测试用类,这样太繁琐了。...
  • shan9liang
  • shan9liang
  • 2014-10-26 17:35
  • 88790

spring-test单元测试(三)-spring mvc请求测试

上篇文章中我们介绍了如何在struts环境下,进行模拟action的请求测试,以及我们使用了EasyMock框架,来模拟对象的行为。这篇文章我们会继续介绍spring mvc环境下如何对controller进行单元测试。另外我们带来一种全新的mock框架mockito。   一、准备工...
  • wangxindong11
  • wangxindong11
  • 2016-11-24 14:25
  • 1603

Spring对Controller、Service、Dao进行Junit单元测试总结

Spring对Controller、Service、Dao进行Junit单元测试总结​ 所有用Junit进行单元测试,都需要下面的配置@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"c...
  • u013041642
  • u013041642
  • 2017-05-08 19:58
  • 9976

spring项目的单元测试编写

1 单元测试 单元测试(Unit Testing),  即测试功能代码的预期行为和实际行为的差异, 是一种白盒测试。 可以快速的测试自己的程序, 提高代码质量; 也可以用来便捷地测试不熟悉的类库的行为, 熟悉类库。 使用eclipse的junit插件可以快速的建立单元测...
  • qq_19768163
  • qq_19768163
  • 2017-04-16 12:12
  • 264

聊聊单元测试(三)——Spring Test+JUnit完美组合

2014-10-26 17:35 30367人阅读 评论(45) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 本着“不写单元测试的程序员不是好程序员”原则,我在坚...
  • cuibruce
  • cuibruce
  • 2016-10-25 16:21
  • 817

Spring项目单元测试

Spring项目单元测试探讨。
  • u013275741
  • u013275741
  • 2016-10-20 11:50
  • 1714

单元测试启动spring容器

介绍在spring的框架下,做单元测试的两种办法。     一、使用spring中对Junit框架的整合功能     除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:   org....
  • qq_18416057
  • qq_18416057
  • 2016-11-30 16:20
  • 3054

Spring整合Junit4进行单元测试

一.加入依赖包 使用spring的测试框架需要加入以下依赖包: JUnit 4 (官方下载:http://www.junit.org/) Spring Test (Spring框架中的test包) Spring 相关其他依赖包(不再赘述了,就是context等包) 如果使用maven,在基...
  • qq_32786873
  • qq_32786873
  • 2017-02-22 11:08
  • 18624

Spring集成Junit4单元测试

1、maven依赖<properties> <org.springframework.version>4.2.4.RELEASE</org.springframework.version> <java.version>1.7</j...
  • FX_SKY
  • FX_SKY
  • 2016-06-13 00:13
  • 8065
    个人资料
    • 访问:2315次
    • 积分:42
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档