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