JMockit从入门到实战

版权声明:转载请注明出处 https://blog.csdn.net/None_yel/article/details/89015154


声明:该文档参考资料 JMockit中文网

JMockit简介

Mock工具的一种(关于Mock思想的介绍
点击此处,了解为什么使用JMockit

作用

为了方便实现Mock

注解介绍

@Mocked

@Injectable

@Tested

JMockit实战

测试目标

类:HelloJMockit

import java.util.Locale;
/**
 * @program: jmockit-demo
 * @description: 测试目标
 * @create:2019-04-04 11:22
 */
public class HelloJMockit {
    public String sayHello() {
        Locale locale = Locale.getDefault();
        if (locale.equals(Locale.CHINA)) {
            return "你好,JMockit!";
        } else {
            return "Hello,JMockit!";
        }
    }
}

测试类

说明:Expectations的代码是为测试准备数据。
下面内容会有点儿啰嗦,但是方便理解,这里是我初学时理解困难的地方,所以作为分享,望共勉!吐槽请直接喷,别客气!

测试目标方法

目标是测试if条件语句为中国的情况,所以要让locale的值为 Locale.CHINA,才能走中国的那个if条件。
即:
HelloJMockit类的sayHello方法中
Locale locale = Locale.getDefault();
的locale值为“Locale.CHINA”
那么怎么实现呢,请接着看

设置方法

通过Expectations的代码块,
首先,声明要mock的内容为:
Locale.getDefault();注意是sayHello方法中的“Locale locale = locale.getDefault();
的部分”

然后,result的值的录制,即为 Locale.getDefault(); 的返回值
最后,经过Expectations处理的HelloJMockit类中的sayHello方法中的locale的值才是Locale.CHINA。

import mockit.Expectations;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.Locale;
/**
 * @program: jmockit-demo
 * @description: 测试类
 * @create:2019-04-04 11:24
 */
public class HelloJMockitTest {
    /**
     * 测试场景:当前是在中国
     */
    @Test
    public void testSayHelloAtChina() {
        // 假设当前位置是在中国
        new Expectations(Locale.class) {
            {
                Locale.getDefault();
                result = Locale.CHINA;
            }
        };
        // 断言说中文
        Assert.assertTrue("你好,JMockit!".equals((new HelloJMockit()).sayHello()));
    }
}

猜你喜欢

转载自blog.csdn.net/None_yel/article/details/89015154