• JAVA 单元测试总结 2017-05-02 15:17:22
    单元测试的重要性这里就不说了,直接进入正题。很多程序员不喜欢写单元测试,导致项目经常会花很多时间去debug,这完全得不偿失。对关键方法进行单元测试,可以在早期业务逻辑还没那么复杂的时候,尽快排除症结。在...
    单元测试的重要性这里就不说了,直接进入正题。很多程序员不喜欢写单元测试,导致项目经常会花很多时间去debug,这完全得不偿失。对关键方法进行单元测试,可以在早期业务逻辑还没那么复杂的时候,尽快排除症结。
    
    在dao,manager,server,web这样的分层项目中,通常单元测试是要写在server层的,因为server层可以测的最多。本文中不介绍单元测试的原理,只是介绍单元测试最常用的断言和Jmockit的用法,可以应付业务开发中绝大部分单元测试。
    
    
    首先添加maven依赖
    ```
    
        
             junit
             junit
             4.10
             test
         
         
             org.springframework
             spring-test
             3.2.9.RELEASE
             test
         
         
             org.jmockit
             jmockit
             1.24
             test
         
         
             org.mockito
             mockito-all
             1.8.4
             test
         
    
    ```
    
    #**1 BaseTest.java**
    server层新建test包,在IDEA中标记为绿色,这个里面写Before和After,如果不需要,就空在这里即可。其它具体的测试类要继承BaseTest.java。
    
    ![这里写图片描述](https://img-blog.csdn.net/20170110114146035?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW50b255OTExOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    package com.sf.sfpp.notice.test;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = { "/test-service.xml" })
    public class BaseTest  extends AbstractTransactionalJUnit4SpringContextTests {
        @Before
        public void init(){
        }
        @After
        public void print(){
        }
    }
    ```
    #**2 assert断言**
    使用assert断言是常用的单元测试方法之一。其本质是将方法的返回结果与预期值进行比较,相等则结果为绿色(单元测试通过),反之为红色(单元测试未通过)。
    
    比方说,我们在Manager层有一个类,UserHistoryManager,里面有个方法是根据ID删除用户操作历史
    
    ```
    @Autowired
    private UserHistoryMapper userHistoryMapper;
    
    public int deleteUserHistoryById(int userHistoryId){
        return userHistoryMapper.deleteUserHistoryById(userHistoryId);
    }
    ```
    
    现在想要对这个方法进行单元测试,在server层的test下面的impl文件夹中新建一个TestUserHistoryManager类,依旧如第一张图所示,代码如下:
    
    ```
    package com.sf.sfpp.notice.test.impl;
    
    import com.sf.sfpp.notice.common.domain.UserHistory;
    import com.sf.sfpp.notice.manager.UserHistoryManager;
    import com.sf.sfpp.notice.test.BaseTest;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    public class TestUserHistoryManager extends BaseTest {
        @Autowired
        private UserHistoryManager userHistoryManager;
    
        @Test
        public void testDeleteUserHistoryById(){
    	    Assert.assertEquals(true,userHistoryManager.deleteUserHistoryById(4) > 0);
        }
    }
    ```
    #**3 Jmockit**
    有些方法要远远比上面的assert复杂,例如当你的方法中要添加一个对象到数据库中,此时如何进行单元测试呢?
    
    还是如第一张图片所示,在test下面的impl文件夹中新建TestUserNotificationManager.java,测试一下UserHistoryManager中添加用户历史的方法。
    ```
    package com.sf.sfpp.notice.test.impl;
    
    import com.sf.sfpp.notice.common.domain.UserHistory;
    import com.sf.sfpp.notice.manager.UserHistoryManager;
    import com.sf.sfpp.notice.test.BaseTest;
    import org.junit.Assert;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import static org.mockito.Mockito.mock;
    import static org.mockito.Mockito.when;
    
    public class TestUserNotificationManager extends BaseTest {
        @Autowired
        private UserHistoryManager userHistoryManager;
    
        @Test
        public void testAddUserHistory(){
            UserHistory userHistory = mock(UserHistory.class);
            when(userHistory.getAction()).thenReturn("balabala");
            when(userHistory.getTargetId()).thenReturn("balabala");
            when(userHistory.getUserId()).thenReturn(43);
            when(userHistory.getTargetKind()).thenReturn("balabala");
            when(userHistory.getId()).thenReturn("balabala");
            Assert.assertTrue(userHistoryManager.addUserHistory(balabala));
        }
    
    }
    
    ```
    上面的方法相当于用Jmockit虚拟了一个UserHistory对象(用户操作历史),然后根据其中的每个属性看返回值(字符串属性对应字符串返回值,int属性对应int返回值)。
    
    在IDEA中点击方法名前面的绿色箭头(ctrl+shift+F10)
    
    单元测试只要看到下面的绿色条,就表示测试通过了。
    ![这里写图片描述](https://img-blog.csdn.net/20170110123955271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW50b255OTExOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    **说明**
    如有转载,请务必注明出处
    http://blog.csdn.net/antony9118/article/details/54312710
    
    
    展开全文
  • Java 单元测试的 7 个技巧 2017-01-23 10:08:22
    测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。
  • java单元测试和集成spring单元测试在我们编写项目过程中,经常会需要进行代码测试,那是不是在编写一个main方法之后,然后编写各种的测试代码。这样做,显然是不合适的也是很不专业的。那怎么办呢?今天我们来聊下...
  • java单元测试入门——JUnit 2016-06-28 13:45:44
    测试类的原则 测试方法上必须使用@Test... 测试单元中的每个方法必须可以独立测试测试方法间不能有任何的依赖; 测试类使用Test作为类名的后缀(不是必须); 测试方法使用test作为方法名的前缀(不是必须)
  • java JUnit单元测试 2019-12-01 13:45:12
    实验课程名称:___软件工程基本实验____________ ... 单元测试 实验成绩 实 验 者 专业班级 软件1501 组 别 ...
  • 作为一名java开发者,相信你或多或少的接触过单元测试,对于测试来讲它是一门能够区分专业开发人员与业余开发人员的重要学科,这篇文章将对java中最常见的一个单元测试框架junit进行一个梳理和讲解。如果你之前没...
  • 大家好,今天我将讨论JUnit和单元测试... 我经常与Java开发人员见面并一起工作,这些Java开发人员非常了解Java,但还没有编写单个单元测试。 当我问他们为什么不编写单元测试时,他们提出了许多 借口, 例如他们没有...
  • 近日,实验楼上线了新课《Java 单元测试入门实战》,本课程主要讲解如何使用 JUnit 来进行单元测试,会学习到单元测试的基本概念以及 JUnit 的基本功能和操作,并且了解单元测试的基本步骤和方法。 关于对 JUnit 的...
  • 本文将介绍10个优秀的 Java 测试框架和库,来提升你的自动化测试技能。以下为译文:最近,我写了很多面向 Java 开发者的文章,介绍了一些值得开发者学习的编程语言、库以及框架。面对多项技术能力,如果你的精力只够...
  • 使用Junit做单元测试 1.课程设计目的: 1)理解单元测试原理 2)学会使用Junit做单元测试 2.课程设计方法: 1)确定测试单元 2)设计测试用例 3.课程设计内容: 1)编写四则运算程序 2)确定测试单元 3)设计...
  • 单元测试与热部署 2020-06-08 10:42:21
    1.4 单元测试与热部署 (1)单元测试 ​ 开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom...
  • Java代码覆盖率测试 2019-02-10 19:59:58
    自己在eclipse中编写一段代码,并编写单元测试,通过jacoco查看代码覆盖率; 自己编写一段代码,在ant中配置built.xml,实现编译、测试、生成exec、生成report; 自己编写一个简单的web项目,并用jacoco agent 统计...
  • 全网第1份基于python3.x与selenium结合的自动化实践课程; 本课程应用UnitTest单元测试框架+实例进行讲解; PageObject模式在实际测试过程中的应用。
  • 在软件开发中,单元测试是必不可少的一环,缺少单元测试,软件上线后经常会问题百出。如果有了单元测试,这些问题大多是可以及时发现和处理的。因此,掌握单元测试是一个高端程序员的必备技能之一,无...
  • 虽然有三种主要类型的软件测试:单元测试,功能测试和集成测试,但是在这篇文章中,我们将讨论开发人员级单元测试。在我深入讲述具体细节之前,让我们先来回顾一下这三种测试的详细内容。软件开发测试的类型 单元...
  • 单元测试——第六周作业 2019-07-20 04:10:40
    单元测试 单元测试的地位   软件测试是软件开发过程中一个重要的环节,它贯穿于整个过程,经历单元测试、集成测试、 确认测试、系统测试和验收测试。而其中的单元测试是最低级别的测试,而且一般都是需要 程序员...
  • Java 语言的实践经验,以便于后续进行更偏向于编程的接口测试或单元测试。 所以,再经过了两个月的左右时间, 《Selenium2 Java 自动化测试实战》这本电书初步完成,它是在《Selenium2 Python 自动化测试实战》的...
  • Java自动化测试(一) 2007-11-22 23:17:00
    这周都在忙大学最后一门课的课程设计——软件自动化...从Java事件机制的基础说起,其中有一小部分关于开源软件测试框架Abbot的简单介绍还是先说说Abbot吧,Abbot可以支持Java GUI组件从单元测试到集成测试,简单地说
  • 今天有一位同学由于时间不够让我帮忙做一下C#单元测试的例子,我思考了一下我好像也不会呐,那没事儿就学学这么折腾这玩意吧。由于我的同学很贴心的给了我一个她做的PPT,里面有一些收集到的概念,既然有好东西那么...
  • 1. 讲解软件一般开发流程 2 .讲解单元测试的定位 3. 讲解单元测试的地位 4. 讲解JUnit4基本使用 5. 讲解EclEmma
1 2 3 4 5 ... 20
收藏数 13,928
精华内容 5,571