2011-07-07 10 views
3

スカンジナビア語の文字を含むユーザー名でログインするテストケース(実際は統合テストです)があります。問題は、コマンドラインからAntタスクを実行すると、エンコーディングが正しくないため(UTF-8でなければならない)認証が失敗するということです。テストは、Eclipseから実行するとうまく動作しますが、コマンドラインからはうまく動作しません。AntでjUnitタスクのエンコーディングを設定する

<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 

どちらもこれらの作品のこれまでのところ私は、Antターゲットの両方のAntに正しいエンコーディングを教えしようとしました。私は何でも、テストはまだ失敗し、試験報告書は述べている:

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

私が言ったように、私は、Eclipseからそれを実行した場合、すべてが美しく動作します。また、エンコードをISO-8859-1に変更してEclipseの実行コンフィギュレーションを変更してテストすると、期待通りにテストが失敗することに気付きました。だから明らかにエンコーディングを変更することは可能ですが、どうやってそれをしますか?

+0

参照:http://stackoverflow.com/questions/1339352/how-do-i-set-dfile-encoding-within-ants-build-xmlおよびhttp://stackoverflow.com/questions/ 1686271/how-do-i-set-file-encoding-for-junit-test-in-ant –

答えて

5

JUnitを別のJVMで実行するには、fork=yesを使用する必要があります。

そのままですが、file.encodingはAntのJVMから継承されており、jvmargによってオーバーライドされません。

JUnit Taskマニュアルページにjvmargのマニュアルを参照してください:

フォークが有効になっている場合は、追加の パラメータは、ネストされた要素を介して新しいVM に渡すことができます。

+0

ありがとうございました。私はちょっと、コマンドラインパラメータがAntのJVMに影響を及ぼすことを期待していましたが、そうは思いません。 – Carlos

+0

私もそう思っていたでしょう。私はあなたが「正しい道」を渡していないと推測することができます。多分 'ant -Dfile.encoding = UTF-8 run_tests'またはANT_OPTSに含めるでしょうか? – sudocode

+0

引用符も付けずに試してみましたが、どちらもうまくいきませんでした。 – Carlos

関連する問題