J'utilise JUnit 4, Java 8 et Gradle 1.12. J'ai un fichier avec json par défaut que j'ai besoin de charger. Mon projet contient src/main/java/
(contenant la source du projet), src/main/resources/
(vide), src/test/java/
(source de test unitaire) et src/test/resources/
(le fichier de données json à charger). Le fichier build.gradle
est dans la racine.Accéder aux ressources dans les tests unitaires
Dans mon code que j'ai:
public class UnitTests extends JerseyTest
{
@Test
public void test1() throws IOException
{
String json = UnitTests.readResource("/testData.json");
// Do stuff ...
}
// ...
private static String readResource(String resource) throws IOException
{
// I had these three lines combined, but separated them to find the null.
ClassLoader c = UnitTests.class.getClassLoader();
URL r = c.getSystemResource(resource); // This is returning null. ????
//URL r = c.getResource(resource); // This had the same issue.
String fileName = r.getFile();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName)))
{
StringBuffer fileData = new StringBuffer();
char[] buf = new char[1024];
int readCount = 0;
while ((readCount = reader.read(buf)) != -1)
{
String readData = String.valueOf(buf, 0, readCount);
fileData.append(readData);
}
return fileData.toString();
}
}
}
D'après ce que je lis, cela devrait me donner accès au fichier de ressources. Toutefois, j'obtiens une exception de pointeur null lorsque j'essaie d'utiliser l'URL, car l'appel getSystemResource()
renvoie null.
Comment puis-je accéder à mes fichiers de ressources?
Avez-vous le/src/test/dossier de ressources dans votre classpath? –
J'en doute. Je ne charge pas les cours. – kwiqsilver