我想在Groovy中将“logger.isDebugEnabled()”模拟为False

2ic8powd  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(164)

我想从groovy spock中创建“logger.isDebugEnabled()”。

logger.isDebugEnabled() >> false

我的代码是

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.PropertyResolver;

public class Sample{
    public static final Logger logger = LoggerFactory.getLogger(Sample.class);

   public void checkForAllRequiredProperties(String scope) {

       if (logger.isDebugEnabled()) {
            logger.debug("some message ");
        }

    }
}

loggerprivate static final,我无法模拟logger.isDebugEnabled()

7jmck4yq

7jmck4yq1#

您可以使用slf4j-test,它可以让您访问TestLogger,然后您可以使用它来设置所需的日志级别,还可以检查日志消息。请参阅usage examples的网站。

import spock.lang.*
import uk.org.lidalia.slf4jtest.TestLogger
import uk.org.lidalia.slf4jtest.TestLoggerFactory

import static uk.org.lidalia.slf4jtest.LoggingEvent.*

class ASpec extends Specification {
  TestLogger logger = TestLoggerFactory.getTestLogger(Sample)

  def "a test" () {
    given:
    // will only enable error level
    logger.setEnabledLevels(Level.ERROR) 

    when:
    // ...

    then:
    logger.getLoggingEvents() == [debug("some message ")]
  }
}

您可能希望将这些日志记录测试分离到一个单独的测试目标中,以便其他测试使用正常的日志记录基础结构,或者不使用,这取决于您测试日志记录的范围。

相关问题