Dans mon projet, j'ai une méthode qui fait des traitements sur les données provenant d'un fichier excel.
Voici comment la méthode lit le fichier excel (avec l'API jxl).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
	Workbook iExcelFile = null;
 
	try
	{
	    iExcelFile = Workbook.getWorkbook(new File(aFileName));
	    Sheet iTab = iExcelFile.getSheet(aTabName);
 
// traitement des données
Elle attend donc un paramètre aFileName qui est le chemin du fichier excel (et le nom de l'onglet à lire), par exemple :
C:\temp\mon_fichier.xls
C'est le chemin que nous donnera l'utilisateur via l'interface de l'outil.

Tout se passe bien dans ce cas-là.

J'ai fait un test unitaire pour cette méthode avec un fichier excel contenant des données de test que j'ai mis dans mon projet (package resources)

par conséquent, dans mon test unitaire, je "reconstruis" le chemin de ce fichier comme ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
	String iFileTM = "com/ouate/passerellePMOtoPALM/common/resources/fichier_test_load_TM.xls";
	String iPath = getClass().getClassLoader().getResource(iFileTM).getFile();
Mon iPath contient alors qqch du style :
C:\eclipse\jPasserellePMOToPALM\test\com\ouate\passerellePMOtoPALM\common\resources\fichier_test_load_TM.xls
Si j'exécute le test unitaire (avec jUnit) dans Eclipse, il passe.

Le problème se situe lorsque j'essaye de générer le jar de l'application (avec Ant) : le script build.xml fait passer les tests unitaires avant de générer le jar.
Et là le test ne passe pas !
Ant exige d'avoir les tests unitaires dans un .jar intermédiaire pour pouvoir les exécuter.
et du coup, il ne retrouve pas le fichier excel pourtant également présent dans le jar contenant les tests unitaires.

Je précise que les autres tests unitaires n'utilisant pas de fichier excel s'exécutent correctement.

J'aurai donc deux questions :
- existe-t-il un moyen d'exécuter les tests unitaires sans créer ce jar intermédiaire ?
- sinon, comment lire le fichier excel présent dans ce jar tout en gardant la compatibilité de ma méthode pour que l'utilisateur puisse renseigner un chemin en dur ?

j'ai essayé de transformer ma méthode en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
	Workbook iExcelFile = null;
 
	try
	{
	    iExcelFile = Workbook.getWorkbook(getClass().getClassLoader().getResourceAsStream(aFileName));
	    Sheet iTab = iExcelFile.getSheet(aTabName);
 
// traitement des données
et là le test unitaire passe (en ne donnant que le chemin du package dans mon test unitaire) mais du coup, la méthode ne marche pas pour l'utilisateur qui lui va nous donner un chemin en dur.

J'espère être claire (c dur d'expliquer) et que vous pourrez m'aider.