1. Mock
-
作用:创建一个模拟对象,用于替代真实的依赖对象。
-
使用场景:当测试的类依赖其他类或接口时,可以使用 Mock 来模拟这些依赖,避免调用真实的方法或服务。
-
特点:Mock 对象的所有方法默认都是“空的”,除非显式地定义它们的行为。
2. InjectMocks
-
作用:创建一个真实对象,并自动将 Mock 对象注入到该对象的依赖中。
-
使用场景:当测试的类有依赖需要注入时(如通过构造函数、Setter 方法或字段注入),可以使用 InjectMocks 来自动注入 Mock 对象。
-
特点:InjectMocks 会尝试将 Mock 对象注入到被测试对象的依赖中,确保被测试对象在测试中使用的是模拟的依赖。
3. Spy
-
作用:创建一个部分模拟对象,允许调用真实的方法,同时也可以对某些方法进行模拟。
-
使用场景:当需要测试的对象大部分行为是真实的,但某些方法需要模拟时,可以使用 Spy。
-
特点:Spy 对象默认调用真实方法,除非显式地对某些方法进行模拟。
总结
-
Mock:完全模拟对象,适用于替代所有依赖。
-
InjectMocks:自动将 Mock 对象注入到被测试对象中,简化依赖注入。
-
Spy:部分模拟对象,适用于需要保留部分真实行为的场景。
这些工具通常与测试框架(如 JUnit、Mockito 等)结合使用,帮助开发者编写更简洁、可维护的单元测试。