Wicket JUnit测试不使用UTF-8属性

时间:2015-02-15 20:38:09

标签: java properties junit wicket wicket-tester

我正在使用Wicket构建应用程序,我正在为我的页面编写JUnit测试。我的页面位于一个包中,该包还包含一个名为wicket-package.utf8.properties的属性文件。在服务器上部署应用程序时,已成功加载属性:

INFO  org.apache.wicket.resource.PropertiesFactory - Loading properties files from file:/tmp/cargo/conf/webapps/my-project/WEB-INF/classes/com/myproject/web/wicket/page/wicket-package.utf8.properties with loader org.apache.wicket.resource.UtfPropertiesFilePropertiesLoader@37024e21

当我运行JUnit测试时出现问题,因为PropertiesFactory加载了不同的属性文件:

INFO  org.apache.wicket.resource.PropertiesFactory - Loading properties files from jar:file:/home/lovro/.gradle/caches/modules-2/files-2.1/org.apache.wicket/wicket-core/6.16.0/85dd5611907b269f6a25569d9df45513bd0b1b5a/wicket-core-6.16.0.jar!/org/apache/wicket/Application.properties with loader org.apache.wicket.resource.IsoPropertiesFilePropertiesLoader@62e7f11d

您可以看到,在服务器上使用了UtfPropertiesFilePropertiesLoader,而在测试中,IsoPropertiesFilePropertiesLoader用于加载属性。

如何在JUnit测试中强制使用我的自定义utf8属性文件?

2 个答案:

答案 0 :(得分:1)

Wicket应该加载所有可用的资源包,即基于UTF-8的资源包和Wicket发行版提供的默认资源包。 它虽然懒散地加载它们。即只有加载了com.myproject.web.wicket.page包中的页面时,才会加载基于UTF-8的文件。

答案 1 :(得分:0)

对于所询问的案例不是一个真实的答案,但非常相关并且包含在它可以帮助其他人的情况下。我在一个项目中遇到了一个问题,即在从.properties切换到.utf8.properties之后,翻译在单元测试中没有工作,尽管在Tomcat上部署的WAR的翻译工作正常。属性的XML格式在两种情况下都不起作用。

经过一番检查后,我得出的结论是将属性文件移动到我的HTML文件解决问题的同一个地方。最初的属性与.java文件位于同一个目录中,这应该没问题。 .properties.xml文件无法在Tomcat上运行的原因可能是由于ant构建文件首先不在WAR中包含它们。

如果我遵循默认(最佳做法?)将所有来源(代码和资源)放在一起,我当然会完全避免这个问题。