簡體   English   中英

使用Maven測試加載log4j.xml

[英]loading log4j.xml using maven test

我正在嘗試使用加載“ log4j.xml”的Java代碼運行“ MVN測試”。 我收到文件找不到異常。 希望能得到一些幫助。

我的Java代碼:

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測試用例:

import static org.junit.Assert.*;

import org.junit.Test;

public class MyClassTests {

    @Test
    public void testCheck() {
        MyClass myc = new MyClass();
        assertEquals(true, myc.check()); 
    }
}

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>

檔案結構:

  • pom.xml = * / myproject / pom.xml
  • log4j.xml = * / myproject / src / main / resources / log4j.xml
  • myclass.java = * / myproject / src / main / java / MyClass.java
  • junit測試= * / myproject / src / test / java / MyClassTests.java

當我運行命令“ mvn test”時,出現log4j.xml的文件未找到異常:

java.io.FileNotFoundException:* / myproject / log4j.xml(無此類文件或目錄)

基本上,代碼是在項目的根文件夾而不是/ src / main / resources文件夾中查找log4j.xml。 我不想將代碼更改為“ DOMConfigurator.configure(“ / src / main / resources / log4j.xml”);“ 這將在已部署的應用程序中引起問題。 需要更優雅的解決方案。

我看不到您的POM,但您應該在構建聲明中包含一個資源部分,以確保src / main / resources可作為類資源使用。

    <build>
    <outputDirectory>build/maven/${artifactId}/target/classes</outputDirectory>

<resources>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
</build>

然后,DOMConfigurator應該能夠將log4j.xml定位為類資源。 如果在項目上運行maven軟件包,則應查看build或target文件夾,然后將log4j.xml復制到classes文件夾。 然后,您將知道它應該作為資源可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM