Java 如何为使用FreeMarker模板的代码编写单元测试?

Java 如何为使用FreeMarker模板的代码编写单元测试?,java,unit-testing,freemarker,Java,Unit Testing,Freemarker,我将使用Java中的模板引擎(可能是FreeMarker)。现在我想知道如何为它编写单元测试 我可以将预期的输出准备为文本文件,但每当我更改模板时,我都必须手动更改它。我想使用模板解析输出,以获取模型数据,并将其与原始模型一起使用。我可以这样做吗 取决于模板将输出的内容。当然,如果它产生了一种格式良好的格式,比如XML或JSON,你可以很容易地解析它,所以我只能假设它可能是HTML。您可能能够使用JTidy将其解析为可以从Java使用的DOM模型 另一种选择可能是使用好的旧式grep例程,然后

我将使用Java中的模板引擎(可能是
FreeMarker
)。现在我想知道如何为它编写单元测试


我可以将预期的输出准备为文本文件,但每当我更改模板时,我都必须手动更改它。我想使用模板解析输出,以获取模型数据,并将其与原始模型一起使用。我可以这样做吗

取决于模板将输出的内容。当然,如果它产生了一种格式良好的格式,比如XML或JSON,你可以很容易地解析它,所以我只能假设它可能是HTML。您可能能够使用JTidy将其解析为可以从Java使用的DOM模型

另一种选择可能是使用好的旧式grep例程,然后构建诸如assertContains、assertDoesNotContain等原语。我有一个JSON库,我为其编写单元测试,我采用了这一方法来执行旧式grep,它工作得很好,因为它捕获了bug。我担心直接解析JSON代码,因为我会使用在测试中编写的代码来测试这些代码。您的情况可能不同,因此解析到DOM模型可能更有意义

要考虑的是,你正在测试这个观点。所以,当事情在视觉上发生变化时,你可能很难让你的测试保持最新。在大多数程序中,视图会发生很大的变化,因为你的客户,PM,控制你所做事情的人,经常改变他们的想法