Java 测试中 mock 对象

Zeeshan Afridi 2022年6月15日
Java 测试中 mock 对象

模拟对象有助于模拟和验证真实对象,而无需在这些对象中运行真实代码。你可以设置一个 mock 来返回方法调用的特定结果,并轻松验证该方法是否被调用。

如上所述,Mock 对象用于单元测试。如果你有一个要测试其方法的对象并且这些方法依赖于其他一些对象,那么在这种情况下,你可以创建依赖项的模拟而不是该依赖项的实际实例,并且你可以测试你的对象隔离中。

Java 中的模拟对象

用于创建模拟对象的常见 Java 框架包括 JMockEasyMock。这两个框架通常允许你创建模拟对象,并且你可以相应地定义它们的行为,以了解返回值和效果的确切期望。

例如,一个常见的用例可能是在模型-视图-控制器 (MVC) 应用程序中,我们有一个数据访问对象 (DAO) 层和一个执行业务逻辑的控制器。如果你想测试控制器并且控制器依赖于数据访问对象 (DAO),那么你可以制作一个 DAO 的模拟对象,它将虚拟对象返回给你的控制器。

模拟对象有助于测试你要测试的应用程序的功能,因为我们可以通过模拟这些依赖对象来实现所有依赖项。

如果他们通过了测试,则可以确定该测试下的单元是正确的。

需要考虑的一件重要事情是,模拟对象实现与它们模拟的真实对象相同的接口。这允许你的代码通过接口类型处理它们,就好像它们是真实事物的实例一样。

要使用模拟对象,请导入 Mockito 库; 导入静态 org.mockito.Mockito.*; 允许你使用 mock() 方法,该方法有助于创建模拟对象实例。

下一步是模拟创建,语法是 List mockedList = mock(List.class);。现在要添加一些值,我们使用定义的 List 对象如下,mockedList.add("Value one"),并使用 verify() 方法验证它,如下:verify(mockedList).add("one")

//Import Library
import static org.mockito.Mockito.*;

// Create Mock
 List mockedList = mock(List.class);

 //using mock object
 mockedList.add("one");
 mockedList.clear();

 // Varifying
 verify(mockedList).add("one");
 verify(mockedList).clear();
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn