Java @InjectMock是否在所有其他bean中用mock替换bean?

Java @InjectMock是否在所有其他bean中用mock替换bean?,java,dependency-injection,mockito,inversion-of-control,Java,Dependency Injection,Mockito,Inversion Of Control,如果我注释 @InjectMock MyClass myclass; 在测试中,这是否意味着,在所有情况下,其他bean都是用MyClass的依赖项初始化的,它们将用这个模拟实例初始化 换句话说,如果我有 @ApplicationScope class MyClass { 在某个地方,它会被忽略?我想你有一个打字错误,应该有@InjectMocks。关于你的问题: 这是否意味着,在所有情况下,其他bean都是用MyClass的依赖项初始化的,它们将用这个模拟实例初始化 据我所知,答案是否定的

如果我注释

@InjectMock
MyClass myclass;
在测试中,这是否意味着,在所有情况下,其他bean都是用
MyClass
的依赖项初始化的,它们将用这个模拟实例初始化

换句话说,如果我有

@ApplicationScope
class MyClass {

在某个地方,它会被忽略?

我想你有一个打字错误,应该有
@InjectMocks
。关于你的问题:

这是否意味着,在所有情况下,其他bean都是用MyClass的依赖项初始化的,它们将用这个模拟实例初始化

据我所知,答案是否定的

@InjectMocks
MyClass myclass;
不会创建
MyClass
的模拟,也不会使其全局可访问(或在任何地方注入),但当有任何可用的模拟时,它会将其他模拟注入
MyClass
的实例中。例如,如果您的
MyClass
如下所示:

@Component
public MyClass {
    @Resource
    private SomeResource someResource;
}
使用
@InjectMocks
将在以下情况下有意义:

@Mock
private SomeResource someResource;
@InjectMocks
private MyClass myClass;
然后,对
myClass
someResource
的任何调用实际上都会以
@Mock
为目标,然后您可能需要根据需要对其进行存根

MyClass
实例的创建和mock的注入分别发生在每个
@Test