对于Mockito,我习惯于将Mocks注入单个测试阶段,如下所示:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest() {
@InjectMocks
private MyClass myClass;
@Mock
private OtherClass1 mockedClass1UsedByMyClass;
@Mock
private OtherClass2 mockedClass2UsedByMyClass;
但是让我们说MyClass
也使用一个简单的类HelperClass
,它提供了一些简单的“帮助”方法,并且没有任何进一步的依赖:
public class MyClass {
@Autowired
private OtherClass1 otherClass1;
@Autowired
private OtherClass2 otherClass2;
@Autowired
private HelperClass helperClass; // Don't want to mock this one...
宁愿使用这个类的真实版本,而不是试图模拟返回的所有内容,因为它所做的只是一些简单的,确定性的处理。有没有办法做到这一点?
答案 0 :(得分:3)
如果您想利用@InjectMocks
,请使用@Spy ..默认情况下,它会使用原始impl,您可以手动选择要模拟的方法:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest() {
@InjectMocks
private MyClass myClass;
@Mock
private OtherClass1 mockedClass1UsedByMyClass;
@Spy
private HelperClass helperClass;
@Mock
private OtherClass2 mockedClass2UsedByMyClass;
}