【发布时间】:2019-05-09 02:56:01
【问题描述】:
当尝试在我的 JSF 应用程序上执行测试驱动开发时,我很难理解如何使我的类更具可测试性和解耦性。例如:
@Test
public void testViewDocumentReturnsServletPath(){
DocumentDO doc = new DocumentDO();
doc.setID(7L);
doc.setType(“PDF”);
DocumentHandler dh = new DocumentHandler(doc);
String servletPath = dh.viewDocument();
assertTrue(servletPath, contains(“../../pdf?path=“);
}
这只有在我删除 viewDocument() 中的一些支持私有方法时才能测试(以我目前的知识),这些私有方法旨在与数据库等外部资源进行交互。
如何使用这些支持的私有方法对公共 API 进行单元测试?
【问题讨论】:
-
如果您希望方法可测试,请删除 private 并添加 final。这为您提供了与私有方法相同的性能,但可以在外部进行测试。如果您担心其他类调用您的 now package visible 方法,请考虑制作更细粒度的包。
标签: java unit-testing testing junit encapsulation