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).
Elle attend donc un paramètre aFileName qui est le chemin du fichier excel (et le nom de l'onglet à lire), par exemple :
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
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 :
Mon iPath contient alors qqch du style :
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();
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
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.
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
J'espère être claire (c dur d'expliquer) et que vous pourrez m'aider.
Partager