Junit 如何测试Java9+;没有模仿doclet API的doclet?

Junit 如何测试Java9+;没有模仿doclet API的doclet?,junit,java-9,doclet,Junit,Java 9,Doclet,我已经用Java9+编写了一个Doclet。我想使用JUnit框架测试它,而不模拟DocletAPI。有什么好办法吗?如果你知道该用什么,答案很简单。 下面是一个可以在JUnit测试中使用的手动调用示例 DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool(); String[] args = new String[] { "-sourcepath

我已经用Java9+编写了一个Doclet。我想使用JUnit框架测试它,而不模拟DocletAPI。有什么好办法吗?

如果你知道该用什么,答案很简单。 下面是一个可以在JUnit测试中使用的手动调用示例

DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool();
        String[] args = new String[] {
          "-sourcepath",
          "./src/test/java",
          "-subpackages",
          "<whatever-package-in-test-sources>",
          "<whatever-package-in-test-sources>",
          "-d",
          "whatever not used just to show compatibility",
          "-author",
          "whatever not used just to show compatibility",
          "-doctitle",
          "whatever not used just to show compatibility",
          "-windowtitle",
          "whatever not used just to show compatibility",
          "-classdir",
          BUILD_PROPERTY_FILE_LOCATION
        };
        DocumentationTool.DocumentationTask task = systemDocumentationTool.getTask(null, null, null,
          <MyDocletClass>.class, Arrays.asList(args), null);

        task.call();
        // Your checks after invocation

DocumentationTool systemDocumentationTool=ToolProvider.getSystemDocumentationTool();
字符串[]args=新字符串[]{
“-sourcepath”,
“/src/test/java”,
“-子包”,
"",
"",
“-d”,
“不只是为了显示兼容性而使用的内容”,
“-作者”,
“不只是为了显示兼容性而使用的内容”,
“-doctitle”,
“不只是为了显示兼容性而使用的内容”,
“-windowtitle”,
“不只是为了显示兼容性而使用的内容”,
“-classdir”,
生成\u属性\u文件\u位置
};
DocumentationTool.DocumentationTask任务=systemDocumentationTool.getTask(null,null,null,
.class,Arrays.asList(args),null);
task.call();
//调用后的检查

将代码拆分为可以单独测试的单元。这就是单元测试的要点。单元测试需要模仿是一个根深蒂固的神话。事实上,单元测试比模仿的炒作要古老得多。我已经做到了:)。我想做的是使用真正的Doclet API进行测试。由于工具API对所有内容都有一个抽象,包括输入、输出、文件系统、日志/报告、选项等,所以仍然不需要模拟,您只需要实现要重定向的特定工件。