中易网

junit和mockito的区别

答案:1  悬赏:20  
解决时间 2021-02-17 14:33
junit和mockito的区别
最佳答案
Mockito是一个开源mock框架;Junit是一个Java语言的单元测试框架。
junit的测试用例:

public class MainTstObjectJMockTest {
private Mockery context = new JUnit4Mockery();

private MayMockObject mayMockObject;
private MainTstObject mainTstObject;

@Before
public void setUp() {
this.mayMockObject = this.context.mock(MayMockObject.class); // Mock了外接接口

this.mainTstObject = new MainTstObject();
this.mainTstObject.setMayMockObject(this.mayMockObject);
}

@Test
public void process() {
final String str1 = "Mockito返回字符串。";
final String str2 = "Mockito返回字符串。";

this.context.checking(new Expectations() {
{
oneOf(mayMockObject).getString(str2);
will(returnValue("")); // Mock返回值

// allowing(mayMockObject).getString(with(any(String.class)));
// will(returnValue(""));
}
});

String ret = this.mainTstObject.create(str1, str2);
Assert.assertEquals(ret, str1);
}

@After
public void tearDown() {
}
}

Mockito的测试用例:

public class MainTstObjectMockitoTest {
// 指定Mock的对象
@Mock
private MayMockObject mayMockObject;

private MainTstObject mainTstObject;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this); // 声明测试用例类

this.mainTstObject = new MainTstObject();
this.mainTstObject.setMayMockObject(this.mayMockObject);
}

@Test
public void process() {
String str1 = "Mockito返回字符串。";
String str2 = "Mockito返回字符串。";

Mockito.when(this.mayMockObject.getString(str2)).thenReturn(""); // Mock返回值

String ret = this.mainTstObject.create(str1, str2);
Assert.assertEquals(ret, str1);
}

@After
public void tearDown(){
}
}



junit和Mockito在用法上的一些区别:
1、对于要Mock的对象,JMock要显示指出来【this.mayMockObject = this.context.mock(MayMockObject.class);】;
而Mockito只是简单加上注释【@Mock】,然后声明下测试用例类即可【MockitoAnnotations.initMocks(this);】。

2、对于方法的模拟,junit显得更加复杂了【this.context.checking(new Expectations() {
{
oneOf(mayMockObject).getString(str2);
will(returnValue(""));
}
});】
而Mockito只要简单的一行代码就行【Mockito.when(this.mayMockObject.getString(str2)).thenReturn("");】。

从上可以看出,Mockito的代码行更少,更加简洁易记!
另外需要注意的是:junit只能Mock接口,也就是上面的例子中【MayMockObject】只能为接口,不能为实体类;而Mockito就没有这个限制。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
溢馨茶缘地址好找么,我有些事要过去
工伤致几级伤残不能下岗
瑞丰速递本溪分公司地址在什么地方,我要处理
苹果6splus型号为MKU92B/A是什么版本的求
纯棉短T衣领总是被我洗卷曲变形,为什么
殴打两次构成三人轻微伤定为什么罪
4?3乘以?等于?22?
高尔基的海燕用什么配乐好
魔战三当Buff装可以的吗
什么生什么此的成语
我家养了一窝蜜锋为什么会相互撕咬?
dlnlho是什么牌子的手表?
怎样才能不怕冷?
滕王阁序 一言均赋,四韵俱成 的均是什么意思
百世快递北地揽收中心地址好找么,我有些事要
推荐资讯
暗黑血统2第2块心之石卡关
澳洲蔚达vitahealth 保健药品好吗?
若想了解洋务派在中央的代表人物的情况,可查
我这串手链属于紫牙乌吗?
我想学短线炒股该看哪些书?
051210086 真的假的
怎样才能在两只母兔中找出小兔崽子的兔妈妈?
公主岭市人民法院环城人民法庭地址有知道的么
帮忙推荐一款茶楼的收银系统案,有没人知道啊
2013年腾讯实习生笔试多少分能过
寿宁县金星广告有限公司地址在什么地方,想过
c#开发的网页视频聊天
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?