Java 在Ant中设置jUnit任务的编码

Java 在Ant中设置jUnit任务的编码,java,encoding,ant,junit,Java,Encoding,Ant,Junit,我有一个测试用例(它实际上是一个集成测试),它使用包含斯堪的纳维亚字母的用户名登录。问题是,当我从命令行运行Ant任务时,身份验证失败,因为编码不正确(应该是UTF-8)。当我从Eclipse运行测试时,测试运行得很好,但不是从命令行运行。到目前为止,我已经尝试在Ant目标中告诉Ant正确的编码: <target name="run_tests"> <junit fork="no" haltonfailure="no"> <jvmarg va

我有一个测试用例(它实际上是一个集成测试),它使用包含斯堪的纳维亚字母的用户名登录。问题是,当我从命令行运行Ant任务时,身份验证失败,因为编码不正确(应该是UTF-8)。当我从Eclipse运行测试时,测试运行得很好,但不是从命令行运行。到目前为止,我已经尝试在Ant目标中告诉Ant正确的编码:

<target name="run_tests">
    <junit fork="no" haltonfailure="no">
        <jvmarg value="-Dfile.encoding=UTF-8"/>
        <formatter type="xml" usefile="true" />
        <classpath refid="test.classpath" />
        <test name="com.company.integration.AllIntegrationTests" />
    </junit>
</target>
这两种方法都不管用。无论我做什么,测试仍然失败,测试报告说:

<property name="file.encoding" value="cp1252" />


就像我说的,如果我从Eclipse运行它,一切都会运行得很好。我还注意到,如果我在Eclipse中通过将编码更改为ISO-8859-1来修改测试的运行配置,测试会像预期的那样失败。因此,显然可以更改编码,但如何更改呢?

您需要使用
fork=yes
在单独的JVM中执行JUnit

实际上,
file.encoding
是从Ant的JVM继承的,不会被jvmarg覆盖

请参阅手册页中的jvmarg文档:

如果启用了fork,则需要额外的 可以将参数传递给新VM 通过嵌套元素


另请看:谢谢你,成功了。我有点期待命令行参数会影响Ant的JVM,但我想不会,我也会这么想。我只能猜测你没有“正确的方式”通过考试。也许
ant-Dfile.encoding=UTF-8运行测试
或者将其包含在ant选项中?
<property name="file.encoding" value="cp1252" />