版权声明:转载请注明出处 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()));
}
}