J'ai un projet qui a un fichier de ressources dans le dossier de test:
J'ai:
InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
Et voici la méthode MyClass.java:
public void load(String filePath) ClassLoader classloader = Thread.currentThread().getContextClassLoader(); InputStream inputStream = classloader.getResourceAsStream(filePath); InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); reader = new BufferedReader(streamReader); //... }
Si je lancez les tests depuis Eclipse, tous les tests se passent bien.
Je lance l'installation propre de maven, le test échoue avec java.lang.NullPointerException
à cette ligne:
XXX
Que dois-je faire?
Merci
3 Réponses :
Votre ressource testfile.txt
est au bon endroit. Cela devrait fonctionner sauf si vous avez des règles de filtrage des ressources Maven personnalisées, par exemple pour exclure les fichiers .txt
. Vérifiez ce qu'il y a dans la target / test-classes
après l'échec de la compilation.
Vous pouvez essayer d'utiliser le chemin de ressource absolu /myfolder/testfile.txt
à la place et arrêter d'utiliser ContextClassLoader :
String path = "/myfolder/testfile.txt"; InputStream inputStream = MyClass.class.getResourceAsStream(path);
Vous pouvez essayer d'ajouter la ligne ci-dessous avec la balise build dans pom.xml.
<directory>src/test/resources</directory>
J'ai créé un même code pour le même et ça marche pour moi. Veuillez trouver ci-dessous le code, cela pourrait vous aider.
mon fichier pom
public class Test { @org.junit.Test public void test() { String args[] = { "test/testfile.txt" }; TestJunit test2 = new TestJunit(); test2.load(args[0]); } }
Classe principale
public class TestJunit { public void load(String filePath) { ClassLoader classloader = Thread.currentThread().getContextClassLoader(); InputStream inputStream = classloader.getResourceAsStream(filePath); InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(streamReader); String strCurrentLine; try { while ((strCurrentLine = reader.readLine()) != null) { System.out.println(strCurrentLine); } }catch (Exception e) { e.printStackTrace(); } } }
et Test class
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.radhey</groupId> <artifactId>junitTest</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java-version>1.8</java-version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>${java-version}</source> <target>${java-version}</target> </configuration> </plugin> </plugins> </build> </project>
J'ai également ajouté ce code à git