3

JUnit テスト (ANT から実行) の一部として、環境に依存するだけでなく、実行ごとに変化する可能性のあるかなりの数のプロパティにアクセスする必要があります。同じ build.xml を使用する可能性のある他の多くの開発者に影響を与えないようにするために、これらのプロパティを-Dフラグを使用してコマンド ラインで定義したいと考えました (スクリプトを使用して簡単に設定できます)。antのタスクについて読ん<junit>で、これらのプロパティは、フラグを使用して JUnit テストを実行している VM に簡単に複製できると思いましたclonevmが、これはうまくいかないようです。プロパティが正しく設定されていることを確認する呼び出し<echo>前の簡単な手順で、次のように JUnit テストを実行します。<junit>

<junit
    printsummary="on" showoutput="true" timeout="${tests.timeout.value}"
    haltonfailure="false" errorproperty="test.error.occurred"
    haltonerror="false" failureproperty="test.failure.occurred" forkmode="perTest"
    maxmemory="${project.junit.maxmemory}" clonevm="true">
    <jvmarg line="${project.test.vmargs}"/>
    <sysproperty key="java.io.tmpdir" value="${java.io.tmpdir}"/>
    <formatter type="xml" usefile="true"/>
    <classpath>
        <path refid="build.test.classpath"/>
    </classpath>
    <batchtest fork="yes" todir="${test.rpt.dir}">
        <fileset dir="${test.bin.dir}">
            <include name="**/${test.classes.run}.class"/>
            <includesfile name="${test.run.includesfile}"/>
            <!-- ignore inner classes -->
            <exclude name="**/*$*.class"/>
        </fileset>
    </batchtest>
</junit>

次に、を使用してプロパティ値を読み取ろうとしますSystem.getProperty("property");が、常に null になります。プロパティがJUnit VMに送信されないように、何か間違ったことをしているに違いないと思います。または、プロパティを正しく読み取っていません。何か案は?問題を回避できると思います (スクリプトを使用して一時的なプロパティ ファイルを作成し、それをテストから読み取ります)。

4

1 に答える 1

2

ネストされたsyspropertyset要素を使用してみてください。

junitのドキュメントを参照してください

于 2012-09-06T18:18:57.550 に答える