2010-02-16 6 views
2

Je cours Hudson sur TOMCAT, il peut construire mon projet Netbeans en utilisant le fichier ant build.xml, mais il ne lancera aucun de mes tests unitaires à cause de ce que je suppose être un problème avec le classpath:Comment puis-je faire en sorte que Hudson puisse accéder à JUnit?

package org.junit does not exist 
    [javac] import org.junit.After; 
    [javac]    ^

Mais j'ai JUnit-4.8.1.jar sur le chemin de classe dans/etc/environnement et je peux courir les succčs tests JUnit à partir d'une console à l'aide

java org.junit.runner.JUnitCore org.junit.tests.AllTests 

Mon CLASSPATH est réglé sur /home/bedwyr/junit4.8.1/junit-4.8.1.jar:.

Est-ce que je me trompe quelque part ou y a-t-il autre chose que je dois régler?

[modifier]

Ce que je l'ai fait était d'exporter/include (en utilisant l'EDI) toutes les bibliothèques (y compris Junit) hudson lit alors tout ce qu'il a besoin de la prise en pension de subversion. J'ai ensuite rencontré un problème en exposant hudson à Internet, et j'ai rapidement abandonné Tomcat sur le serveur ubuntu (encore une fois, avec le gestionnaire de sécurité Tomcat) - Glassfish est beaucoup plus lisse et c'est où je suis maintenant - Apache avant avec ajp_proxy à hudson sur glassfish.

+0

Essayez d'exécuter les tests junit à partir de la console avec le même compte d'utilisateur (environnement) que votre TOMCAT. –

+0

Aha! Juste essayé cela et Tomcat6 ne peut pas trouver la classe. – blank

+0

... Je pensais que/etc/environment était global? Pourquoi l'utilisateur de tomcat n'est-il pas capable de voir junit? – blank

Répondre

2

Vous devez définir correctement votre classpath si vous utilisez Ant ou Maven pour effectuer votre build. L'utilisation de Ivy avec Ant ou la commutation de votre build sur Maven permettra à la compilation de rechercher automatiquement les dépendances et de définir correctement le classpath. Si aucune de ces options n'est disponible, vous devez faire quelque chose de similaire à ce qui suit dans Ant.

<property file="build.properties" /> 
<property name="junit-home" location="/etc/environment" /> 

<path id="test.compile.classpath"> 
    <path refid="compile.classpath" /> 
    <pathelement location="${junit-home}/junit-4.8.1.jar" /> 
    <pathelement location="${target}" /> 
</path> 

La partie de build.properties vous permettra de passer outre l'JUnit maison par défaut si elle est différente pour les individus et hudson.

Une autre façon de modifier les propriétés est lors de l'appel Ant d'Hudson il y a une section avancée qui vous permet de passer un fichier de propriétés ou une propriétés forme qui vous permettra d'entrer des paires de valeurs clés dans le format suivant:

junit-home=/etc/environment 
0

Le jar junit est sur le chemin de classe mais il n'est pas emballé quelque part dans le dossier du projet netbeans.

Solution: supprimer le projet JUnit lib de votre NetBeans ajoutée automatique (bibliothèque de test), puis explicitement ajouter le pot de JUnit via un clic droit sur « bibliothèques test » -> « ajouter pot/dossier »

0

Vous pouvez exporter variables d'environnement dans Hudson. Il y a un plugin pour ça.

http://wiki.hudson-ci.org/display/HUDSON/Setenv+Plugin

Mais la solution proposée par Rob est plus logique. Ici, vous n'avez pas à vous soucier de l'endroit où vous courez. Selon la variable d'environnement n'est pas une très bonne idée. Comme cela affecte tous les programmes que vous exécutez.