[英]How do I set the working directory for the Ant 'junit' task?
我的Ant構建包括一個運行一些測試的junit任務。 為了使測試起作用,必須更改指定當前工作目錄( user.dir
)的屬性的值,但我不確定如何實現此目的。
有問題的任務目前看起來像這樣:
<junit printsummary="withOutAndErr" fork="true"
haltonfailure="yes" showoutput="true"
filtertrace="false" dir="C:/workspace/obp-web">
<jvmarg value="-Duser.dir=C:/workspace/obp-web"/>
<classpath>
<fileset dir="${web.lib.dir}" includes="**/*.jar"/>
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</classpath>
<batchtest fork="no" todir="${web.build.dir}/testresults">
<formatter type="xml"/>
<zipfileset src="${web.build.dir}/test-obp-web.jar">
<include name="**/*Test.class"/>
</zipfileset>
</batchtest>
</junit>
請注意,我嘗試使用“dir”屬性和“jvmarg”任務將工作目錄更改為C:/ workspace / obp-web。 但是當我運行Ant並打開詳細輸出時,我看到以下輸出,表明工作目錄未正確設置:
如果在同一個VM中運行,則會忽略[junit] dir屬性
[junit]使用系統屬性 {java.runtime.name = Java(TM)SE運行時環境,sun.boot.library.path = c:\\ jdk6 \\ jre \\ bin,java.vm.version = 10.0-b23,ant。 lib rary.dir = C:\\ java \\ apache-ant-1.7.0 \\ lib,java.vm.vendor = Sun Microsystems Inc.,java.vendor.url = http://java.sun.com/,path 。 separator =;,java.vm.name = Java HotSpot(TM)客戶端VM,file.encoding.pkg = sun.io,user.country = CA,sun.java.launcher = SUN_STANDARD,sun.os.patch.level = Service Pack 1,java.vm.specification.name = Java虛擬機規范, user.dir = c:\\ workspace \\ obp-ear ,java.runtime.version = 1.6.0_07-b06,java.awt.graphicsenv = sun。 awt.Win32GraphicsEnvironment,java.endorse d.dirs = c:\\ jdk6 \\ jre \\ lib \\ endorsed,os.arch = x86,java.io.tmpdir = C:\\ Users \\ donal \\ AppData \\ Local \\ Temp \\,line。分離器=
使用屬性“dir”(還必須分叉vm):
嘗試使用jvmarg:
<junit fork="yes">
<jvmarg value="-Duser.dir=somedir"/>
...
</junit>
請注意,對於junit標記和batchtest標記,fork 必須為true,因為batchtest標記會覆蓋junit中的值。 Jvmargs僅在junit分叉新JVM時才有效。
你嘗試過pathelement位置嗎? 這對我有用。
<classpath>
<!-- filesets, etc. -->
<pathelement location="C:/workspace/obp-web" />
</classpath>
和你一樣的問題。
我通過將batchtest fork設置為true來解決它:
batchtest fork =“ no ”..
至
batchtest fork =“ 是 ”..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.