JUnit和Mockito合作

更新时间:2023-05-05 16:59:01 阅读: 评论:0

JUnit和Mockito合作
这次,我想对测试框架Mockito进⾏概述。 毫⽆疑问,这是⽤于测试Java代码的最受欢迎的⼯具之⼀。 我已经对Mockito的竞争对⼿进⾏了概述。 这篇⽂章将基于有关EasyMock的⽰例应⽤程序。 我的意思是代表咖啡机功能的类。
⽤Mockito准备测试
通常,我将使⽤Maven进⾏项⽬设置。 因此,要使Mockito在项⽬中可⽤,我需要在l⽂件中添加以下依赖项:
<dependencies>
<dependency>
<groupid&kito</groupid>
<artifactid>mockito-all</artifactid>
<version>1.9.5</version>
</dependency>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.11</version>
</dependency>
</dependencies>
请注意,Mockito的正常功能不需要JUnit,可以⽤相同的⽅法使⽤TestNG来代替它。 因此,您可以根据⾃⼰的决定使⽤JUnit或TestNG。
让我们进⼀步。 如前所述,本⽂中的所有测试都是针对帖⼦中的⽰例应⽤程序编写的。 您可以从此处仅阅读“应⽤程序代码”部分。 这⾜以了解测试的主题。
Mockito和JUnit测试
我想从关于Mockito框架的⼏句话开始本节。 毫⽆疑问,借助Mockito,您可以完成测试中希望做的所有事情。 您可以在清除API的帮助下创建模拟,存根,进⾏验证以及所有这些操作。
现在该看看使⽤Mockito进⾏单元测试的样⼦了。
import static org.junit.Asrt.*;
import kito.Mockito.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
kito.Mock;
kito.runners.MockitoJUnitRunner;
import com.app.data.Portion;
import ptions.NotEnoughException;
import hanism.CoffeeMachine;
import hanism.interfaces.ICoffeeMachine;
import hanism.interfaces.IContainer;
@RunWith(MockitoJUnitRunner.class)
public class CoffeeMachineTest {
ICoffeeMachine coffeeMachine;
@Mock
IContainer coffeeContainer;
@Mock
IContainer waterContainer;
@Before
public void tUp() {
coffeeMachine = new CoffeeMachine(coffeeContainer, waterContainer);
}
@After
public void tearDown() {
coffeeContainer = null;
waterContainer = null;
coffeeMachine = null;
}
@Test
public void testMakeCoffe() throws NotEnoughException {
Portion(Portion.LARGE)).thenReturn(true);
Portion(Portion.LARGE)).thenReturn(true);
asrtTrue(coffeeMachine.makeCoffee(Portion.LARGE));
}
@Test
public void testNotEnoughException() throws NotEnoughException {
Portion(Portion.SMALL)).thenReturn(fal);
Portion(Portion.SMALL)).thenReturn(true);
asrtFal(coffeeMachine.makeCoffee(Portion.SMALL));
}
}
我将⽤⼏句话解释⼀下测试班⾥发⽣了什么。 我正在测试咖啡机,为此,我为咖啡容器和⽔容器创建了模拟。 进⼀步在测试中,我将为模拟定义⼀些⾏为,并根据这台咖啡机执⾏预期的操作。
...
@Mock
IContainer coffeeContainer;
@Mock
IContainer waterContainer;
...
在上⾯的代码中,我声明了两个模拟。 以这种⽅式创建模拟需要将@RunWith(MockitoJUnitRunner.class)批注应⽤于测试类。 或者,您可以使⽤MockitoAnnotations.initMocks(testClass); 在运⾏任何测试之前,例如,您可以将此代码段放⼊@Before注释的⽅法中。
.
..
Portion(Portion.LARGE)).thenReturn(true);
...
在Mockito中定义模拟的⾏为⾮常⽅便。 您可以指定在调⽤特定⽅法后应返回的内容。 注意,我在测试类中进⾏了⼏次静态导⼊ 。
摘要
Mockito框架征服了我的⼼。 这⾮常⽅便,其API清晰,使⽤简便。 Mockito包含许多在单元测试开发过程中可能需要的⽅法。 当然,⼀篇⽂章太⼩⽽⽆法描述Mockito的所有功能,因此我建议您使⽤跟随链接进⾏更深⼊的研究。
参考: 博客中来⾃ Alexey Zvolinskiy的 。

本文发布于:2023-05-05 16:59:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/857983.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   模拟   创建   咖啡机   容器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图