@InjectMocks
private Foo foo;
@Mock
private Var var;
@InjectMocks
private MyClass myClass
Foo有Var。
MyClass有Foo。
我通过@InjectMocks
在Foo中注入Var并且喜欢将Foo注入MyClass但是MyClass中的Foo为null。
我想这是因为Foo没有被@Mock
注释。有什么方法可以在将Var注入Foo时将Foo注入MyClass吗?
答案 0 :(得分:0)
假设你的类依赖是这样的:
MyClass ---dependsOn--> Foo --dependsOn--> Var
如果您正在为MyClass
编写单元测试,则只需要模拟Foo
并注入MyClass
。因为Foo
本身在这种情况下被嘲笑,所以您不必担心它的依赖性。
@Mock private Foo foo;
@InjectMock private MyClass myClass;
要为Foo
编写单元测试,我建议您在单独的文件中创建一个单独的单元测试类。在那里你可以模拟Var
并注入Foo
。
@Mock private Var var;
@InjectMock private Foo foo;
总之,应该为每个依赖层编写单元测试。您不应该在一个测试文件中混合两个图层的单元测试。要对一个类进行单元测试,您只需要模拟其直接依赖项。因此,在测试MyClass
时,您只需模拟Var
并根据您的要求模拟其行为:
Mockito.when(var.someMethod()).thenReturn(someValue);