你能解释一下什么时候使用下面的注释,什么时候不使用这些注释吗.我对测试框架非常陌生,对网络上的所有答案都感到困惑.
@Mock
private Resource resource;
@MockBean
private Resource resource;
@InjectMock
private ProductService productService;
@AutoWired
Private ProductRepository productRepo;
你能解释一下什么时候使用下面的注释,什么时候不使用这些注释吗.我对测试框架非常陌生,对网络上的所有答案都感到困惑.
@Mock
private Resource resource;
@MockBean
private Resource resource;
@InjectMock
private ProductService productService;
@AutoWired
Private ProductRepository productRepo;
@Mock
用于使Mockito创建模拟对象.
@InjectMock
当您希望Mockito创建一个对象的实例,并使用带有@Mock
注释的Mock作为其依赖项时.
@AutoWired
当您想从spring上下文自动连接bean时使用,其工作原理与在普通代码中完全相同,但只能在实际创建应用程序上下文的测试中使用,例如用@WebMvcTest
或@SpringBootTest
注释的测试.
@MockBean
可用于将模拟对象添加到Spring应用程序上下文中.mock将替换应用程序上下文中相同类型的任何现有bean.如果没有定义相同类型的bean,将添加一个新的bean.常与@SpringBootTest
连用
所以通常你要么:
@Mock
和@InjectMocks
进行无弹簧的测试@SpringBootTest
或@SpringMvcTest
来启动spring上下文,使用@MockBean
来创建模拟对象,使用@Autowired
来获取要测试的类的实例,mockeans将用于其自动连接的依赖项.在为与数据库交互的代码编写集成测试或希望测试REST API时,可以使用此选项.