San*_*ash 11 java spring springmockito project-reactor spring-webflux
您能否解释一下何时使用以下注释以及何时不使用这些注释。我对测试框架还很陌生,并且对网络上的所有答案感到困惑。
@Mock
private Resource resource;
@MockBean
private Resource resource;
@InjectMock
private ProductService productService;
@AutoWired
Private ProductRepository productRepo;
Run Code Online (Sandbox Code Playgroud)
Joh*_*der 19
@嘲笑
用于使 Mockito 创建一个模拟对象。
@InjectMock
当您希望 Mockito 创建对象的实例并使用注释为 的模拟@Mock作为其依赖项时。
@AutoWired
当您想要从 spring 上下文自动装配 bean 时使用,其工作方式与普通代码完全相同,但只能在实际创建应用程序上下文的测试中使用,例如用 或 注释的@WebMvcTest测试@SpringBootTest。
@MockBean
可用于将模拟对象添加到 Spring 应用程序上下文。模拟将替换应用程序上下文中相同类型的任何现有 bean。如果没有定义相同类型的bean,则会添加一个新的bean。经常与@SpringBootTest
所以通常你要么:
@Mock和@InjectMocks运行测试,这是首选,因为它更快。@SpringBootTest或@SpringMvcTest来启动 spring 上下文,同时@MockBean创建模拟对象并@Autowired获取要测试的类的实例,mockbean 将用于其自动装配的依赖项。在为与数据库交互的代码编写集成测试或想要测试 REST API 控制器时,可以使用它。| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |