2009-01-21 9 views
11

Mi compilación Ant incluye una tarea junit que ejecuta algunas pruebas. Para que las pruebas funcionen, se debe cambiar el valor de la propiedad que especifica el directorio de trabajo actual (user.dir), pero no estoy seguro de cómo lograrlo.¿Cómo configuro el directorio de trabajo para la tarea Ant 'junit'?

La tarea en cuestión actualmente tiene el siguiente aspecto:

<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> 

Tenga en cuenta que he tratado de utilizar el atributo "dir" y la tarea "jvmarg" para cambiar el directorio de trabajo en C:/espacio de trabajo/obp-web. Sin embargo cuando corro hormiga con salida detallada encendido, yo ver la siguiente salida, lo que indica que el directorio de trabajo no se ha configurado correctamente:

[junit] atributo dir ignorado si se está ejecutando en la misma máquina virtual

[junit] Usando las propiedades del sistema {java.runtime.name = Java (TM) SE Runtime Medio Ambiente, 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) Client 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 Specification virtual Machine, usuario .dir = c: \ espacio de trabajo \ obp-oído, 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.separator =

Respuesta

7

Trate de usar un jvmarg:

<junit fork="yes"> 
    <jvmarg value="-Duser.dir=somedir"/> 
    ... 
</junit> 

Tenga en cuenta que tenedor necesidad ser cierto tanto en el junit etiqueta y el etiqueta batchtest como la etiqueta batchtest anula el valor de junit. Los Jvmargs solo funcionan si junit bifurca una nueva JVM.

+1

Lo intenté, pero no tuve suerte. He actualizado el artículo original con la información. –

+0

No puede cambiar el directorio de trabajo actual en Java configurando user.dir. Cambiar la propiedad del sistema se considera un error del usuario. –

+1

@David Eso es cierto, pero estamos instruyendo a junit para que bifurque una nueva JVM con esa propiedad user.dir, sin modificar la propiedad en una JVM en ejecución – Kevin

13

Utilice el atributo "dir" (también debe desembolsar el vm):

http://ant.apache.org/manual/Tasks/junit.html

+0

Lo intenté, pero no tuve suerte. He actualizado el artículo original con la información. –

+0

funcionó para mí. –

+3

Esto también funcionó para mí. No te olvides fork = "sí". – thSoft

0

Ha intentado ubicación pathelement? Esto funcionó para mí.

<classpath> 
<!-- filesets, etc. --> 
<pathelement location="C:/workspace/obp-web" /> 
    </classpath> 
0

Mismo problema que usted.

lo resolví, haciendo que el tenedor batchtest true:

batchtest tenedor = "sin "..

a

batchtest tenedor =" " ..

Cuestiones relacionadas