import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
public class MockitoDemo {
@Test
public void mockitoTest() throws Exception {
Service service = new Service();
Dao dao = mock(Dao.class);// 相当于 new一个dao的模拟类
service.setDao(dao);
when(dao.update("1", "2")).thenReturn(2);
Assert.assertEquals(2, service.update("1", "2"));
// 方法的参数可以匹配任意值,Mockito.anyXXX() 和任意类 Mockito.any(clazz)
when(dao.update(Mockito.anyString(), Mockito.any(String.class))).thenReturn(3);
// 不能将确定值和模糊值混搭,这样会报错
// when(dao.update("3", Mockito.any(String.class))).thenReturn(3);
Assert.assertEquals(3, service.update("3", "4"));
// 下面模拟抛异常
when(dao.update("3", "4")).thenThrow(new RuntimeException());
Assert.assertEquals(-1, service.update("3", "4"));
// void方法抛异常
Mockito.doThrow(new RuntimeException("测试")).when(dao).voidTest();
try {
service.voidTest();
} catch (Exception e) {
Assert.assertEquals("测试", e.getMessage());
}
// 不能模拟抛Exception类
// when(dao.update("3", "4")).thenThrow(new Exception());
// 同一方法不能多次模拟抛异常
// when(dao.update("3", "4")).thenThrow(new NullPointerException());
// Assert.assertEquals(-1, service.update("3", "4"));
}
}
class Service {
private Dao dao;
public void setDao(Dao dao) {
this.dao = dao;
}
public void voidTest() {
dao.voidTest();
}
public int update(String a, String b) {
int i = 0;
try {
i = dao.update(a, b);
} catch (Exception e) {
i = -1;
}
return i;
}
}
class Dao {
public void voidTest() {
}
public int update(String a, String b) {
return 1;
}
}
附上maven依赖
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
</dependency>
分享到:
相关推荐
《单元测试实战:TestNG与Mockito应用解析》 单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、稳定性和可维护性。TestNG和Mockito是两个非常流行的Java单元测试工具,它们提供了强大的功能和灵活的...
3. **在单元测试中的应用**: 在使用Mockito与JUnit进行单元测试时,我们通常会创建一个测试类,包含多个测试方法。每个测试方法专注于测试一个特定的功能点,使用`@Test`注解标记。Mockito 通过 `mock()` 方法创建...
- 分析具体的 Spring 测试示例,了解如何在 Spring 应用程序中使用 Mockito 进行单元测试。 通过上述知识点的详细介绍,可以看出 Mockito 不仅是一个强大的单元测试工具,而且在 TDD 和 BDD 中也发挥着重要作用。...
有了Mockito的文档,开发者可以深入理解和掌握这两个工具的用法,从而编写出更高质量的Java应用程序。在实际工作中,这些工具可以帮助开发者在早期发现和修复错误,提高开发效率,同时也有利于团队协作和代码维护。
Mockito是一款广泛应用于Java开发中的测试驱动开发(TDD)工具,它允许开发者创建和配置模拟对象,以便在测试中隔离代码并验证特定方法的行为。这本书详细介绍了如何有效地利用Mockito来编写整洁、可维护的测试代码...
Mockito作为一种流行的单元测试框架,被广泛应用于Java项目的单元测试中。它通过模拟对象来帮助开发者隔离测试中的依赖项,从而使得测试更加聚焦于被测对象本身的行为。因此,掌握Mockito的基本用法及高级特性对于...
在本文中,我们将深入探讨如何在Spring Boot项目中有效地使用Mockito进行单元测试。Mockito是一个流行的Java单元测试框架,它允许我们创建和配置模拟对象,以便在测试中隔离我们想要验证的代码部分。结合Spring Boot...
Mockito 是一个流行的Java单元测试框架,用于模拟(或称为mocking)对象,使得开发者可以在不依赖实际外部环境的情况下测试代码。...参考博文链接中的内容,可以找到更多关于Mockito的实际应用和示例。
项目文件可能包含了一个简单的Spring Boot应用,其中包含了Mockito和MockMvc的使用示例。文件如`pom.xml`是项目的构建配置,`src`目录下则包含了源代码和测试代码,`target`目录用于存放编译后的类文件,`.idea`目录...
但在实际应用中,有时我们需要测试的代码会依赖于静态方法,例如`TestJava.getName()`。由于静态方法是类级别的,无法通过普通Mockito来模拟,这就需要PowerMockito的介入。通过`@RunWith(PowerMockRunner.class)`和...
通过这样的方式,Spring、TestNG和Mockito共同构建了一套完整的单元测试解决方案,能够有效地测试Spring应用中的各个组件,确保代码的健壮性和可维护性。请参考提供的PDF文件以获取更详细的信息和示例代码。
在IT行业中,集成测试是确保不同组件协同工作的重要环节,特别是在使用Spring MVC构建大型Web应用程序时。本篇文章将深入探讨如何结合TestNG、Mockito以及Spring的自动装配注解进行有效的集成测试。以下是对这些技术...
- **主要功能**:本书提供了大量的实例来展示Mockito功能的实际应用,不仅限于文档介绍,还包括如何高效地使用Mockito进行单元测试的方法。 - **应用场景**:适用于JUnit、PowerMock、TestNG等流行单元测试框架。 #...
- **使用 Mockito 重构遗留代码**:对于已经存在的代码库,使用 Mockito 可以帮助提高测试覆盖率,并使代码更容易维护。 - **高级 Mockito 特性**:了解 Mockito 提供的一些高级特性,如验证方法调用顺序、设置模拟...
以下将详细介绍 Mockito 的常用方法和应用场景。 Mockito 简介 Mockito 是一个开源的模拟测试框架,用于 isolating 依赖项并使测试更快速、更可靠。Mockito 提供了许多实用的方法来模拟对象的行为,以便在测试中 ...
开发者可以通过这些工具创建健壮的测试代码,确保应用程序的稳定性和可靠性。然而,使用Mockito时也应注意,过度依赖mocking可能会导致测试过于脆弱,难以反映真实环境中的行为。因此,合理地结合使用mocking和实际...
这个"java UT mockito配套代码"很可能是包含了一些使用Mockito进行单元测试的示例或者模板,用于帮助开发者更好地理解和应用Mockito。 Mockito框架提供了以下核心功能: 1. **模拟对象创建**:在单元测试中,我们...
在与Mockito和PowerMock结合使用时,JUnit提供了一个执行测试的平台,开发者可以在其中应用mocking和模拟技术来验证代码的正确性。 在下载的压缩包中,可能包含以下内容: - PowerMock-Mockito的jar文件:这些文件...
这个项目可以帮助你更好地理解如何在实际开发中应用这两个工具。通过分析和运行这些示例,你可以学习到如何创建、配置模拟对象,以及如何编写有效的单元测试。 总之,Mockito 和 JUnit 的结合使得单元测试变得更加...
《Android测试开发--基于Java编程语言技术体系》 ...Mockito应用与思考 PowerMock框架 Android环境搭建 Android SDK Android Studio Android项目介绍 构建简单的用户界面 启动另一个 Activity Android测试支持库