1

我正在使用 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上使用 a,而在测试中 aIsoPropertiesFilePropertiesLoader用于加载属性。

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

4

2 回答 2

1

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

于 2015-02-16T05:50:06.960 回答
0

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

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

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

于 2017-07-22T08:21:01.337 回答