我有一个使用 Maven 管理的小型命令行实用程序项目。该实用程序是一个非常简单的应用程序,用于填充 Velocity 模板并将结果转储到新文件中。我的问题是在哪里放置我的 Velocity 模板。当我把它们放进去时src/test/resources/foo/bar/baz
,mvn test
因为找不到引用的模板而失败,即使它显然在里面target/classes/foo/bar/baz
,这是.class
测试文件和被测类所在的位置。如果我将模板放在项目的顶级目录中,则测试通过,但是我没有遵循 Maven 项目结构,并且我怀疑实际打包的 .jar 文件不起作用。我错过了什么?
更新:
被测方法:
public final void mergeTemplate(final String templateFileName, final Writer writer) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, IOException, Exception {
Velocity.init();
Velocity.mergeTemplate(templateFileName, Charset.defaultCharset().name(), context(), writer);
}
测试方法:
@Test
public void testMergeTemplate() throws Exception {
final FooGenerator generator = new FooGenerator();
final StringWriter writer = new StringWriter();
generator.mergeTemplate("foo.yaml", writer);
Assert.assertEquals("Something went horribly, horribly wrong.", EXPECTED_RESULT, writer.toString().trim());
}
我唯一可以放置foo.yaml
并通过测试的地方是项目的根目录,即作为 and 的对等src
点target
。