2009-11-25 5 views
3

J'ai un ensemble de cas de tests unitaires qui dépendent d'un fichier test.properties. Lorsque j'exécute les tests sous Mac OSX ou Linux en utilisant Maven ('test mvn'), ils fonctionnent correctement. Mais lorsqu'ils s'exécutent sous Windows 7, ils ne peuvent pas trouver le fichier sauf si je le copie directement dans le dossier de la classe. Le code pour retourner les propriétés est les deux méthodes suivantes:getResourceAsStream fonctionne différemment sur Mac OSX et Windows 7?

private void loadProperties() { 
    try { 
     properties.load(HibernateTestCase.class.getResourceAsStream(getPropertiesFilePath())); 
    } catch (Exception ioExc) { 
     ioExc.printStackTrace(); 
    } 
} 

private String getPropertiesFilePath() { 
    return File.separator + "test.properties"; 
} 

Quelle est la vraie affaire ici? Est-ce que le chemin du fichier est mal réglé quelque part? Merci d'avance!

+0

Où se trouve le fichier lorsqu'il fonctionne sous Mac et Linux? Quels sont les classpaths dans les différents environnements. L'hypothèse du code serait que le fichier est à la racine du même jar ou dir que HibernateTestCase.class. Aussi, ne vous embêtez pas à utiliser File.separator car toutes les plates-formes Java accepteront "/" très bien pour la résolution des ressources (et d'autres choses). En fait, cela ne me surprendrait pas si cela lui causait un problème, même si j'en doute. – PSpeed

Répondre

8

Le séparateur dans les noms de ressources est toujours '/'. File.separator varie d'une plate-forme à l'autre (sur les variantes UNIX, ce sera généralement /, mais pas Windows).

+0

En remplaçant la dernière ligne de mon code de File.separator + "test.properties" à "/test.properties" rempli la facture. Merci! –

1

Soit votre chemin de classe est différent, soit vous utilisez un chargeur de classe différent avec des caractéristiques de résolution différentes.