如何使用特定的file.encoding选项测试方法



在Maven应用程序中,我需要用不同的编码测试一个方法,并且只测试其中一个。其他必须使用System.getProperty("file.encoding")提供的编码。

例如:

@Test
public void test1() {...} // regular encoding
@Test
public void test2() {...} // regular encoding
@Test
public void test3() {...} // regular encoding
[...]
@Test
public void testEncoding() {...} // custom encoding!!!

我不能用System.setProperty("file.encoding", "...")更改编码,因为它是缓存的,我想要一个可以版本控制的过程(即独立于IDEA或Eclipse等IDE,并为任何下载了代码的人工作(。

通过JUnit或Maven插件有什么方法可以做到这一点吗?

方法1:可选字符集参数

您不需要使用file.encoding属性来测试您的方法。正如您可能知道的,此属性只会为具有可选编码/字符集参数的方法设置DEFAULT编码。

然而,所有这些方法(没有charset参数(都被认为是一个坏习惯。也就是说,用一个可选参数Charset重载方法,而没有这个可选参数的方法应该传入Charset.defaultCharset()

通过这种方式,您可以轻松地相应地测试您的方法。

方法2:Maven Invoker插件

使用maven调用程序插件在src/it/<testname>中创建独立的测试。这些都是完全孤立的maven项目。几乎在任何maven项目中都可以找到例子。例如,您可以通过surefire传递系统参数。

如果这个

最新更新