2017-09-27 82 views
0

我試圖運行我的課測試它使用java.util.logging.Logger中java.util.logging.Logger中的測試類

import java.util.logging.Logger; 

public class TestLogging { 
    final Logger logger = Logger.getLogger("Test"); 

    public void f1() { 
     logger.entering(getClass().getName(), "f1"); 

     logger.info("f1"); 
     logger.fine("f1"); 
     logger.finer("f1"); 
     logger.finest("f1"); 

     logger.exiting(getClass().getName(), "f1"); 
    } 
} 

所以我建立一個測試類,以檢查是否記錄儀產生一個輸出,而類是正在測試

import org.junit.Before 
import org.junit.Test 
import java.util.logging.Level 
import java.util.logging.Logger 

class TestLogger { 
    @Before 
    fun setupLogger() { 
     Logger.getLogger("Test").level = Level.FINEST 
    } 

    @Test 
    fun test() { 
     TestLogging().f1() 
    } 
} 

但是當我運行它,我只看到下面的輸出,彷彿級別設置爲默認值。

TestLogger > test STANDARD_ERROR 
    Sep 27, 2017 2:17:32 PM TestLogging f1 
    INFO: f1 

回答

2

您必須持有一個strong reference to your logger,它比方法本地範圍更寬。如果您不這樣做,則由於記錄器的垃圾回收,您的級別設置可能會丟失。

如果您想查看控制檯中的輸出,則還必須調整控制檯處理程序的級別。

如果要聲明一些輸出值,則需要安裝filter or handler以查找特定的LogRecord

+0

謝謝你,@ jmehrens,那是缺少的。所以我在幾次嘗試之後重寫了測試類,現在它可以工作了! –