Java 将一个@Mock注入另一个@Mock还是重构?
对于我来说,有没有一种方法可以在测试类中注入带有mocked的CS,因为它内部有一个CachedDb的注入mock?代码可以不费吹灰之力地重构:我将doSomething放在AS中,因为其行为类似于AS的其他函数,但如果这是一个糟糕的设计,我可以将其重构为一个共享的utils包或类似的东西Java 将一个@Mock注入另一个@Mock还是重构?,java,unit-testing,mocking,mockito,Java,Unit Testing,Mocking,Mockito,对于我来说,有没有一种方法可以在测试类中注入带有mocked的CS,因为它内部有一个CachedDb的注入mock?代码可以不费吹灰之力地重构:我将doSomething放在AS中,因为其行为类似于AS的其他函数,但如果这是一个糟糕的设计,我可以将其重构为一个共享的utils包或类似的东西 提前感谢您的帮助。对Foo的单元测试应该只关心模拟Foo的直接依赖关系 您不应该假设AS使用CachedDb来实现其方法。CS不在乎。它所做的只是与AS进行交互。AS是否使用CachedDB无关紧要,只要它的
提前感谢您的帮助。对
Foo
的单元测试应该只关心模拟Foo
的直接依赖关系
您不应该假设AS使用CachedDb来实现其方法。CS不在乎。它所做的只是与AS进行交互。AS是否使用CachedDB无关紧要,只要它的方法执行它们应该执行的操作
因此,CS的测试应该模拟为。没有缓存DDB
@RunWith(MockitoJUnitRunner.class)
public class CSTest {
@Mock
private CachedDb cachedDb;
@InjectMocks
private AS aS;
@InjectMocks
private CS cS;
}
public class CS extends BS {
@Inject
protected AS aS;
public doStuff() {
aS.doSomething();
}
}
public class AS extends BS {
//bunch of code here
}