📄 groovylogtestcase.groovy
字号:
package groovy.langimport java.util.logging.*/**Helper class to spoof log entries as produced by calling arbitrary code.This allows non-intrusive testing of dependent objects withoutexplicitly using Mock objects as long as those dependent objectsdo some proper logging.As a measure of last resort, it can be used on MetaClass to spoofit's log entries on 'invokeMethod'.@author Dierk Koenig@see GroovyLogTestCaseTest**/class GroovyLogTestCase extends GroovyTestCase { /** Execute the given Closure with the according level for the Logger that is qualified by the qualifier and return the log output as a String. Qualifiers are usually package or class names. Existing log level and handlers are restored after execution. **/ static String stringLog (Level level, String qualifier, Closure yield){ // store old values Logger logger = Logger.getLogger(qualifier) def usesParentHandlers = logger.useParentHandlers // set new values logger.useParentHandlers = false def out = new ByteArrayOutputStream(1024) Handler stringHandler = new StreamHandler(out, new SimpleFormatter()) stringHandler.level = Level.ALL logger.addHandler(stringHandler) // any old handlers remain withLevel(level, qualifier, yield) // restore old values logger.level = Level.OFF // temporarily, to avoid logging the 3 stmts below stringHandler.flush() out.close() logger.removeHandler(stringHandler) logger.useParentHandlers = usesParentHandlers return out.toString() } /** Execute the given Closure with the according level for the Logger that is qualified by the qualifier. Qualifiers are usually package or class names. The log level is restored after execution. **/ static def withLevel(Level level, String qualifier, Closure yield){ // store old values Logger logger = Logger.getLogger(qualifier) def loglevel = logger.level // set new values if (!logger.isLoggable(level)) logger.level = level // use min value def result = yield() // restore old values logger.level = loglevel return result }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -