JUnit测试中的Freemarker和Spring

戴夫·陶布勒

与许多Java应用程序一样,我们在应用程序中使用Freemarker呈现电子邮件。我们发现某些模板的渲染不完全符合我们的预期,因此我们意识到我们应该为模板渲染编写一些单元测试。好吧,我设置了测试,并立即收到FileNotFoundException:找不到模板“ my / template.ftl”。

我认为这必须是通过简单的解决方案即可解决的问题。那是很多小时前的工作,我意识到自己错了。据我所知,这既不解决也不容易!

我认为我们应用的设置非常标准。我们有一个Maven项目,并将Freemarker模板存储在src / main / webapp / WEB-INF / freemarker中。尽管我们大多数应用程序的功能都是由Quartz作业启动的,但我们还是将其部署为webapp。因此,我们所需的就是XML XML文件中的以下配置:

<bean id="freemarkerConfiguration"
    class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
    <property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
</bean>

然后在我们的代码中,我们以如下方式自动装配bean:

@Autowired
protected Configuration freemarkerConfiguration;

并像这样使用它:

Template template = freemarkerConfiguration.getTemplate("mail/job/detail.ftl");

在我们部署的应用程序的上下文中,这非常有效,可以在Quartz作业中执行。但是,从单元测试中运行时,我们总是会找不到模板。

我尝试了许多不同的方法,但没有一种有效。最后一个涉及创建我自己的Freemarker TemplateLoader实现,并试图使其从类路径加载Freemarker模板文件。这种方法的问题是:a)我在测试中其他地方成功使用的相同的类加载代码找不到模板,b)我不确定正确实现TemplateLoader涉及的所有内容,并且c)这一切似乎都没有一般而言过于复杂。

我可以继续这条路线,但首先...我是否缺少明显的东西?Freemarker的好处之一是它不需要HTTP上下文,那么为什么在Web应用程序上下文之外使用Freemarker如此困难?

普拉萨德

戴夫

从位置使用的ftl文件src/main/webapp/...不在classpath中。而且我相信您的测试课程位于src/test/...无法查看ftl文件(实际上位于中src/main/webapp//WEB-INF/freemarker/mail/job/*.ftl)的位置,因此您会发现模板未发现异常。如果希望它们位于类路径中,请将文件放在src / test / resources中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用JUnit在Spring中测试ConfigurationProperties?

来自分类Dev

Travis在Spring的JUnit测试中失败

来自分类Dev

使用spring,jpa em和dbunit在junit测试中获得“连接不存在”

来自分类Dev

如何在以@RunWith和@ContextConfiguration注释的jUnit测试中访问Spring上下文?

来自分类Dev

使用spring,jpa em和dbunit在junit测试中获取“连接不存在”

来自分类Dev

Spring JUnit测试被测试类中的自动装配变量

来自分类Dev

使用Spring Boot在JUnit测试中的Spring JavaMailSenderImpl上的ClassNotFoundException

来自分类Dev

Spring RestController + Junit测试

来自分类Dev

嵌套测试使用JUnit 5和Spring 2.0.0启动

来自分类Dev

如何使用junit,spring和JPA测试Optmistic Locking?

来自分类Dev

如何使用Junit和Mockito测试Spring验证器

来自分类Dev

黄瓜和JUnit测试

来自分类Dev

JUnit和测试文件

来自分类Dev

如何在JUnit测试中运行Spring Shell脚本

来自分类Dev

在我的JUnit测试中,如何验证Spring RedirectView?

来自分类Dev

Spring集成框架中ResponseEntity <?>的Junit Mockito测试用例

来自分类Dev

在JUnit测试案例中触发Spring批处理作业

来自分类Dev

将Spring服务自动装配到JUnit测试中

来自分类Dev

Spring JUnit测试中未调用Hibernate侦听器

来自分类Dev

JUnit测试Spring示例中的一些疑问

来自分类Dev

JUnit测试不是Spring控制器中的触发方法

来自分类Dev

错误无法在 jUnit 测试 Spring 集成中打开 ServletContext 资源

来自分类Dev

junit中测试类的通用@before和@after

来自分类Dev

使用内存中的hsqldb,hibernate和liquibase进行Junit测试

来自分类Dev

junit中的测试类常见的@before和@after

来自分类Dev

测试和生产环境中的Spring Security

来自分类Dev

Spring MVC + Shiro + Junit测试

来自分类Dev

Spring MVC + Shiro + Junit测试

来自分类Dev

在Freemarker中测试布尔类型的变量

Related 相关文章

  1. 1

    如何使用JUnit在Spring中测试ConfigurationProperties?

  2. 2

    Travis在Spring的JUnit测试中失败

  3. 3

    使用spring,jpa em和dbunit在junit测试中获得“连接不存在”

  4. 4

    如何在以@RunWith和@ContextConfiguration注释的jUnit测试中访问Spring上下文?

  5. 5

    使用spring,jpa em和dbunit在junit测试中获取“连接不存在”

  6. 6

    Spring JUnit测试被测试类中的自动装配变量

  7. 7

    使用Spring Boot在JUnit测试中的Spring JavaMailSenderImpl上的ClassNotFoundException

  8. 8

    Spring RestController + Junit测试

  9. 9

    嵌套测试使用JUnit 5和Spring 2.0.0启动

  10. 10

    如何使用junit,spring和JPA测试Optmistic Locking?

  11. 11

    如何使用Junit和Mockito测试Spring验证器

  12. 12

    黄瓜和JUnit测试

  13. 13

    JUnit和测试文件

  14. 14

    如何在JUnit测试中运行Spring Shell脚本

  15. 15

    在我的JUnit测试中,如何验证Spring RedirectView?

  16. 16

    Spring集成框架中ResponseEntity <?>的Junit Mockito测试用例

  17. 17

    在JUnit测试案例中触发Spring批处理作业

  18. 18

    将Spring服务自动装配到JUnit测试中

  19. 19

    Spring JUnit测试中未调用Hibernate侦听器

  20. 20

    JUnit测试Spring示例中的一些疑问

  21. 21

    JUnit测试不是Spring控制器中的触发方法

  22. 22

    错误无法在 jUnit 测试 Spring 集成中打开 ServletContext 资源

  23. 23

    junit中测试类的通用@before和@after

  24. 24

    使用内存中的hsqldb,hibernate和liquibase进行Junit测试

  25. 25

    junit中的测试类常见的@before和@after

  26. 26

    测试和生产环境中的Spring Security

  27. 27

    Spring MVC + Shiro + Junit测试

  28. 28

    Spring MVC + Shiro + Junit测试

  29. 29

    在Freemarker中测试布尔类型的变量

热门标签

归档