在具有super关键字引用的super类方法的调用上,在Junit测试方法中存根字符串值

问题描述

我在项目中使用了 logback 日志记录机制,并希望掩盖日志中的敏感数据。作为其一部分,我实现了执行屏蔽操作的类。为了获取要屏蔽的事件日志,我正在调用 PatternLayout doLayout()方法,其中超级关键字引用为波纹管。

function test()
    A = Matrix{Float64}(undef,3,3)
    return map(1:10) do i
        svd!(rand!(A))
    end
end

Logback XML附加器:

import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.ILoggingEvent;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.springframework.stereotype.Component;

@Component
public class MaskingPatternLayout extends PatternLayout {

  private String patternsProperty;
  private String mask;

  public String getPatternsProperty() {
    return patternsProperty;
  }

  public void setPatternsProperty(String patternsProperty) {
    this.patternsProperty = patternsProperty;
  }

  public String getMask() {
    return mask;
  }

  public void setMask(String mask) {
    this.mask = mask;
  }

  @Override
  public String doLayout(ILoggingEvent event) {

    String logMessage = super.doLayout(event);

    return Stream.of(logMessage.split("\\|"))
                .map(this::doMasking)
                .collect(Collectors.joining("|"));
  }

  private String doMasking(String logMessage) {

    // .....
    // .....
    // Masking logic goes hear and returns the masked message

    return logMessage;
  }
}

现在,我想为 MaskingPatternLayout 类编写Junit测试用例。

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.mypackage.logging.MaskingPatternLayout">
                <mask>*</mask>
                <patternsProperty>sensitive string names</patternsProperty>
                <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level - | correlationId=%X{correlationId:-unknown} | %msg%n</pattern>
            </layout>
        </encoder>
    </appender>

我想在 super.doLayout(event)语句的调用中对 doLayoutTest()测试类中存在的 logMessage 字符串进行存根处理strong> MaskingPatternLayout 类。 super.doLayout(event)语句还有另一种选择,但是它是在父类 PatternLayout 中定义的受保护的方法 writeLoopOnConverters(event)。>

任何帮助将不胜感激。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)