使用Junit4和JMockit进行单元测试

本文介绍了如何运用Junit4和JMockit进行单元测试,详细讲解了JAVA学习路径和提升技能的方法,特别适合希望深入学习和提升JAVA编程能力的读者。
摘要由CSDN通过智能技术生成
首先介绍下在Idea中如何安装Juni插件:

1. 安装JUnitGenerator V2.0
在idea中,打开File-Setting-Plugins,在右侧弹出的搜索框中搜索JUnitGenerator V2.0,安装之后重启idea。

2. 设置JUnitGenerator V2.0的属性
在idea中,打开File-Setting-Other Settings-JUnitGenerator
a) 在properties框中,将OutputPath改为  ${SOURCEPATH}/../../test/${PACKAGE}/${FILENAME},将默认template改为Junit4。
b) 在Junit4框中,将package test.$entry.packageName; 改为  package $entry.packageName;

3. 进入想测试的类中,单击鼠标右键-Generator-junit4,能生成你要的测试类,具体的细节可以自己调整。

接下来,看下使用maven的工程如何来编写单元测试代码.主要介绍JUnit,JMockit,Spring-test以及groboutils-core框架

使用Junit4+JMockit进行单元测试的依赖如下:
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
</dependency>
<dependency>
  <groupId>org.jmockit</groupId> 
  <artifactId>jmockit</artifactId> 
  <version>1.21</version>
</dependency>



JMockit有两种测试方式,一种是基于行为的,一种是基于状态的测试。

通俗点讲,基于行为的mock,就是对mock目标代码的行为进行模仿,更像黑盒测试。基于状态的mock,是站在目标测试代码内部的。可以对传入的参数进行检查、匹配,才返回某些结果,类似白盒。

使用JMockit构建单元测试的例子如下:
基于行为的mock:
@RunWith(JMockit.class)
public class ServiceBehavier {

    @Mocked
    DAO dao = new DAO();

    private Service service = new Service();

    @Test
    public void test() {

        // 1. record 录制期望值
        new Expectations() {
            {
                dao.getStoreCount(anyString);// mock这个方法,无论传入任何String类型的值,都返回同样的值,达到黑盒的效果
                /**
                 * 预期结果,返回900
                 */
                result = 900;
                /**
                times能且只能调用1次。
                */
                times = 1;
            }
        };
        service.setDao(dao);

        // 2. replay 调用
        Assert.assertEquals(Status.NORMAL, service.checkStatus("D"));

         //3.校验是否只调用了一次。如果上面注释的语句再调一次,且把录制的times改为2,那么在验证阶段将会报错。
        new Verifications() {
            {
                dao.getStoreCount(anyString);
                times = 1;
            }
        };

    }
}


基于状态的mock:
public class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值