2009-11-10 6 views
1

J'ajoute un test Junit à l'une de mes classes en utilisant NetBeans 6.7.1, je dois pouvoir charger un un fichier xml spécifique au test, je l'ai donc inclus dans le dossier "Test Packages" (avec mon test actuel). Je suis en cours d'exécution en 2 questions,Ajout de fichiers de test à un test Junit dans Netbeans 6.7.1 - Problèmes getResource, fichier manquant dans le répertoire de construction

(1) getResource est à la recherche dans le mauvais répertoire

(2) mon fichier de test xml ne soit pas copié quand je lance des tests (note, cette fonctionnalité fonctionne avec I ajouter des fichiers dans le répertoire "Sources Packages").

Dans ma classe de test.

this.getClass() getResource ("/")

retours:

D: \ UserProfiles \ myName \ Mes documents \ NetBeansProjects \ ProjectExample \ build \ classes

J'en ai besoin aussi retour:

D: \ UserProfiles \ myName \ Mes documents \ NetBeansProjects \ ProjectExample \ build \ test \ classes

(Comme c'est où les classes de test sont en cours de compilation)

Il semble plutôt hacky appeler getResource, obtenir le parent , puis en examinant test \ classes. Est-ce la bonne façon d'obtenir le chemin vers mon fichier de test? c'est peut-être un bug dans netbeans? En outre, lorsque je clique avec le bouton droit sur mon fichier testFile et que j'exécute des tests, seuls mes fichiers de classe de test sont copiés dans le répertoire test/classes et non dans mon fichier de test xml. Comment puis-je dire à Netbeans de s'assurer de copier un fichier xml régulier avec les fichiers de classe dans le répertoire de construction.

Je voudrais également éviter de pirater la construction ant pour copier mes fichiers de test.

+0

Ok, le problème 2 a été résolu en faisant une construction propre. – vicsz

+0

Bien que, chaque fois que je lance un nouveau test, ces fichiers sont supprimés. – vicsz

Répondre

1

Il suffit de mettre votre fichier dans le même paquet que votre test, par exemple, data.xml dans le paquet foo.bar. Pas de copie ou de construire hacking script est nécessaire, juste faire référence au fichier comme ceci:

getClass().getResource("data.xml"); 

Vous pouvez faire ceci:

getClass().getResource("/foo/bar/data.xml"); 
+0

Merci, mais je préférerais pouvoir accéder à ces fichiers avant de faire un paquet .. c'est-à-dire que je lance les tests et que les fichiers java sont compilés dans des fichiers de classe. – vicsz

+0

Comment voulez-vous dire cela? NetBeans va juste compiler vos classes et lancer vos tests sans créer de * .jar, et vous pouvez référencer un fichier comme celui-ci. – candiru

+0

Juste un clic droit sur le fichier de test, et en sélectionnant "fichier de test" ... seul le fichier sélectionné est construit et testé. Je trouve cela beaucoup plus efficace que de reconstruire le projet entier, quand je veux juste en lancer un nouveau (en utilisant TDD). – vicsz

3

J'ai récemment rencontré ce problème en utilisant NetBeans 6.9.1. Voici comment je l'ai résolu.

  1. Ouvrir Projet-> Propriétés-> Bibliothèques
  2. Sélectionnez l'onglet Exécuter les tests
  3. Cliquez sur Ajouter Jar/Dossier
  4. Naviguer à l'endroit où vous avez enregistré les fichiers de ressources
  5. Ajouter le dossier

Maintenant, l'exécution de tests utilisant ces ressources fonctionnera. J'ai testé cela avec NetBeans 6.9.1 et une simple application Java.NetBeans crée des fichiers de ressources dans le répertoire src par défaut (package par défaut), j'ai donc ajouté le dossier src à l'étape 5 ci-dessus. Une fois que vous faites ces tests, vous trouverez un fichier de ressources dans le classpath.

Puisque NetBeans conditionne les ressources trouvées dans le dossier src par défaut, vous n'avez pas besoin de copier les fichiers et de les synchroniser.

Si vous souhaitez que les ressources de test diffèrent des ressources de production, vous pouvez ajouter les ressources de test dans le package par défaut sous le dossier de test. Puis, au lieu d'ajouter le dossier src à l'étape 4/5 ci-dessus, ajoutez le dossier de test.