在Ant中为jUnit任务设置编码



我有一个测试用例(它实际上是一个集成测试),它使用包含斯堪的纳维亚字母的用户名登录。问题是,当我从命令行运行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>

和从命令行:

ant -D"file.encoding=UTF-8" run_tests

这两个都不行。无论我怎么做,测试仍然失败,测试报告显示:

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

就像我说的,如果我从Eclipse中运行它,一切都运行得很好。我还注意到,如果我通过将编码更改为ISO-8859-1来修改Eclipse中测试的运行配置,测试会像预期的那样失败。很明显,改变编码是可能的,但是你要怎么做呢?

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

事实上,file.encoding是从Ant的JVM继承的,并且不会被您的JVM覆盖。

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

如果启用了fork,则附加参数可能会传递给新虚拟机通过嵌套元素。

最新更新