junit和mockito的区别
答案:1 悬赏:20
解决时间 2021-02-17 14:33
- 提问者网友:辞取
- 2021-02-16 15:47
junit和mockito的区别
最佳答案
- 二级知识专家网友:七十二街
- 2021-02-16 17:09
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就没有这个限制。
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就没有这个限制。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯