laden log4j.xml mit maven test
Ich versuche zu laufen 'mvn test" mit meinem java-code laden "log4j.xml'. Ich bin immer Datei nicht gefunden Ausnahme. Wäre toll, etwas Hilfe zu bekommen.
Mein java-code:
public class MyClass {
static Logger logger = Logger.getLogger(MyClass.class);
public boolean check(){
try{
DOMConfigurator.configure("log4j.xml");
logger.info("into the method");
}
return true;
}
}
Junit test case:
import static org.junit.Assert.*;
import org.junit.Test;
public class MyClassTests {
@Test
public void testCheck() {
MyClass myc = new MyClass();
assertEquals(true, myc.check());
}
}
block pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>log4j.xml</include>
</includes>
<argLine>-Xmx512m</argLine>
</configuration>
<inherited>true</inherited>
</plugin>
Datei-Struktur:
- pom.xml = */myproject/pom.xml
- log4j.xml = */myproject/src/main/resources/log4j.xml
- myclass.java = */myproject/src/main/java/MyClass.java
- junit-test = */myproject/src/test/java/MyClassTests.java
Wenn ich den Befehl "mvn test", bekomme ich eine Datei nicht gefunden Ausnahme für log4j.xml:
java.io.FileNotFoundException:
*/myproject/log4j.xml (Keine solche Datei oder das
Verzeichnis)
Grundsätzlich der code ist auf der Suche nach log4j.xml in den root-Ordner des Projekts, anstatt in den /src/main/resources Ordner. Ich will nicht zu ändern Sie den code "DOMConfigurator.configure("/src/main/resources/log4j.xml");" Dadurch wird die Ausgabe in die bereitgestellte Anwendung. Brauche eine elegantere Lösung.
- Der code unten, ist das Problem behoben. Diese Frage kann geschlossen werden: 'DOMConfigurator.konfigurieren(dies.getClass().getClassLoader().getResource("log4j.xml"));'
- Das funktioniert aber auch da log4j.xml gelesen wird relativ zu einem root-Ressource, dann sollte es DomConfigurator.Konfigurator("/log4j.xml") sollte auch funktionieren, wenn log4j.xml in src/main/resources. DomConfigurator.Konfigurator("log4j.xml") versuchen, die Last aus dem gleichen Paket, das myClass befindet. Dies ist, wie URL-classloadern beheben Klassen/Ressourcen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht sehen, Ihre POM, aber Sie sollten eine Ressourcen-Abschnitt in deinem build-Erklärung zu gewährleisten src/main/resources stehen als Ressourcen-Klassen.
Dann die DOMConfigurator Lage sein sollte, suchen Sie die log4j.xml als Ressourcen-Klassen. Wenn du ein maven-Paket auf Ihr Projekt, die Sie suchen sollten in der build-oder Ziel-Ordner und sehen, dass die log4j.xml kopiert den Ordner classes. Dann werden Sie es wissen sollte als Ressource verfügbar.