分享

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

 春和秋荣 2019-05-17

       为了后期测试基于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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多