【发布时间】:2019-06-17 15:52:04
【问题描述】:
我正在学习依赖注入和使用 Mockito 进行测试。我刚刚找到了一个教程,其中有人解释了一个使用依赖注入和没有依赖注入的应用程序。这是链接:https://www.journaldev.com/2394/java-dependency-injection-design-pattern-example-tutorial
我有两个问题:
第一个问题是关于他为测试编写的代码。那是个什么样的嘲讽?你不需要使用@Mock 来模拟一个对象吗?
这是他的测试代码:
public class MyDIApplicationJUnitTest {
private MessageServiceInjector injector;
@Before
public void setUp(){
//mock the injector with anonymous class
injector = new MessageServiceInjector() {
@Override
public Consumer getConsumer() {
//mock the message service
return new MyDIApplication(new MessageService() {
@Override
public void sendMessage(String msg, String rec) {
System.out.println("Mock Message Service implementation");
}
});
}
};
}
@Test
public void test() {
Consumer consumer = injector.getConsumer();
consumer.processMessages("Hi Pankaj", "pankaj@abc.com");
}
@After
public void tear(){
injector = null;
}
}
第二个问题是关于在没有依赖注入的情况下测试应用程序。我不明白他为什么这么说:“测试应用程序将非常困难,因为我们的应用程序直接创建电子邮件服务实例。我们无法在测试类中模拟这些对象。”为什么我们不能在测试用例中模拟这些对象。
【问题讨论】:
标签: java junit dependency-injection mockito