2010-10-08 14 views
2

J'ai un script de construction Ant qui instrumentalise certains fichiers jar, démarre certains serveurs utilisant ces fichiers jars, puis exécute une suite de tests d'intégration de tests junit à leur encontre.Impossible de spécifier l'emplacement du fichier de données Cobertura pour le serveur s'exécutant sous Ant?

Je souhaite capturer le fichier cobertura.ser de chaque serveur dans un fichier distinct.

Les serveurs doivent avoir leur répertoire de travail défini afin qu'ils puissent récupérer les fichiers de configuration. C'est une exigence du système que le classpath ne doit pas être utilisé pour récupérer ces fichiers.

La définition de la propriété système net.sourceforge.cobertura.datafile permet de définir le fichier de données et cela fonctionne, jusqu'à ce que la propriété "dir" soit définie sur la tâche ant java. Une fois que dir est défini, le serveur démarre correctement, la suite de tests s'exécute correctement, mais lorsque le serveur s'arrête, aucun fichier de données n'est écrit.

est ici un fragment du build.xml:

<parallel> 
    <daemons> 
     <java fork="true" dir="src\main\resources\conf\my.server" classname="my.Server"> 
      <sysproperty key="net.sourceforge.cobertura.datafile" file="target\cobertura.ser" /> 
      <classpath> 
      ... 
      </classpath> 
      <arg value="-server" /> 
     </java> 

     ...more servers... 

     ...run junit tests... 

    </daemons> 
</parallel> 
+0

Le répertoire 'target' existe-t-il dans le répertoire 'my.server'? –

+0

Oui, ça existe. – fiddlesticks

Répondre

0

La réponse est de ne pas exécuter les serveurs comme daemons. Nous faisions cela pour que les serveurs soient automatiquement arrêtés quand la tâche de junit était terminée, mais en réalité, l'instrumentation de Cobertura ne prenait pas en compte le fait que les serveurs étaient en train de s'éteindre et n'écrivait jamais les différents fichiers cobertura.ser .

La solution consistait à supprimer la tâche de démons et à ajouter un mécanisme d'arrêt de serveur explicite que nous pourrions appeler depuis Ant une fois les tests terminés.