在 spring webflux 反应项目中何时使用和不使用@Mock 注释、@MockBean 注释、@InjectMock 注释和@Autowired 注释
When to use and not use @Mock annotation, @MockBean annotation, @InjectMock annotation & @Autowired annotation in a spring webflux reactive project
你能解释一下什么时候使用下面的注释,什么时候不使用这些注释吗?我对测试框架还很陌生,对网络上的所有答案感到困惑。
@Mock
private Resource resource;
@MockBean
private Resource resource;
@InjectMock
private ProductService productService;
@AutoWired
Private ProductRepository productRepo;
@Mock
用于让 Mockito 创建模拟对象。
@InjectMock
当您希望 Mockito 创建一个对象的实例并使用带有 @Mock
注释的模拟作为其依赖项时。
@AutoWired
当您想从 spring 上下文中自动装配一个 bean 时使用,其工作方式与在普通代码中完全相同,但只能用于实际创建应用程序上下文的测试,例如用 [ 注释的测试=11=] 或 @SpringBootTest
.
@MockBean
可用于将模拟对象添加到 Spring 应用程序上下文。该模拟将替换应用程序上下文中任何现有的相同类型的 bean。如果没有定义相同类型的 bean,将添加一个新的 bean。通常与 @SpringBootTest
一起使用
所以通常你要么:
- 在没有 spring 的情况下使用
@Mock
和 @InjectMocks
进行 运行 测试
上下文,这是首选,因为它更快。
- 使用
@SpringBootTest
或@SpringMvcTest
启动spring上下文,@MockBean
创建模拟对象,@Autowired
获取[=的实例53=] 你想测试,mockeans 将用于它的自动装配依赖项。在为与数据库交互的代码编写集成测试或想要测试 REST API. 时使用它
你能解释一下什么时候使用下面的注释,什么时候不使用这些注释吗?我对测试框架还很陌生,对网络上的所有答案感到困惑。
@Mock
private Resource resource;
@MockBean
private Resource resource;
@InjectMock
private ProductService productService;
@AutoWired
Private ProductRepository productRepo;
@Mock
用于让 Mockito 创建模拟对象。
@InjectMock
当您希望 Mockito 创建一个对象的实例并使用带有 @Mock
注释的模拟作为其依赖项时。
@AutoWired
当您想从 spring 上下文中自动装配一个 bean 时使用,其工作方式与在普通代码中完全相同,但只能用于实际创建应用程序上下文的测试,例如用 [ 注释的测试=11=] 或 @SpringBootTest
.
@MockBean
可用于将模拟对象添加到 Spring 应用程序上下文。该模拟将替换应用程序上下文中任何现有的相同类型的 bean。如果没有定义相同类型的 bean,将添加一个新的 bean。通常与 @SpringBootTest
所以通常你要么:
- 在没有 spring 的情况下使用
@Mock
和@InjectMocks
进行 运行 测试 上下文,这是首选,因为它更快。 - 使用
@SpringBootTest
或@SpringMvcTest
启动spring上下文,@MockBean
创建模拟对象,@Autowired
获取[=的实例53=] 你想测试,mockeans 将用于它的自动装配依赖项。在为与数据库交互的代码编写集成测试或想要测试 REST API. 时使用它