我正在将Tomcat 6.0.33与Java 6配合使用。

public class SaveXmlServlet extends HttpServlet {

private CacheService cacheService;

public void init(ServletConfig config) throws ServletException {
    cacheService = CacheServiceLocator.cacheService();
}   // init


如何重新设计我的servlet以...


利用依赖性注入的优势,以便像嘲笑之类的模拟框架可以注入自己的“ cacheService”实现
确保我的jvm中只有一个cacheservice实例。现在,“ CacheServiceLocator.cacheService()”行保证了这一点。


?我没有使用(或允许使用)像Spring或Guice这样的框架。感谢您对重构的任何想法。谢谢-戴夫

最佳答案

有几种选择,尽管我建议您通过不让您“使用”框架的方式来殴打某人。两支快速兵;我敢肯定还有其他人。我先走一下。

您可以结合使用EasyMock / Mockito和PowerMock模拟静态类。从技术上讲,您根本不需要进行任何更改即可获得所需的测试行为。

Servlet初始化参数或JNDI资源提供的类名称可用于创建缓存定位器的实例。提供相同的设置器允许一个单元等。测试以将其设置在课程上。

07-24 21:51