当前位置: 首页 > 知识库问答 >
问题:

如何在Spy-Class中用groovy中的Spock框架对日志错误进行单元测试

梁巴英
2023-03-14
MyClass myClass = Spy(MyClass)
MyClass myClass = new MyClass()

当类是间谍时,如何可能在Spock测试中获得日志消息

共有1个答案

戚泰
2023-03-14

测试日志记录的一般方法是编写一个在内存中存储事件的简单追加器,设置日志记录配置以在测试中使用它,然后在运行测试代码后获取日志记录的事件并验证它们。

假设使用了Logback,测试追加器可以如下所示编写:

public class InMemoryAppender extends AppenderBase<ILoggingEvent> {
    private static final List<String> events = new ArrayList<>();

    public static synchronized List<String> getEvents() {
        return new ArrayList<>(events);
    }

    @Override
    protected void append(ILoggingEvent event) {
        synchronized(InMemoryAppender.class){
            events.add(event.getFormattedMessage());
        }
    }
}

我不认为间谍对此有任何帮助,因为它监视对象的方法,而不是它的内部行为。

 类似资料:
  • 我不明白Spock测试中Mock、Stub和Spy之间的区别,我一直在网上看的教程也没有详细解释它们。

  • 我试图用Maven在SPOCK groovy框架中测试静态java方法。 下面是java类 下面是groovy中的SPOCK测试 和POM文件片段 我在groovy文件夹中有4个测试用例,3个通过,但是这个静态方法测试给出了错误 我正在运行mvn测试来测试这些junits,我尝试将cglib-nodep的版本从3.1更改为2.2.2,但没有成功。 我在包含jar文件之后签入了java构建路径 我还

  • 我正在使用和Spy对函数进行单元测试。 这是正在测试的类: 我正在尝试使用Mockito和spy进行测试,因为我不想调用真正的函数只需验证一下即可。该测试称为 这是错误: 我也尝试过这样做,它会导致空指针:

  • Spock对存根和模拟做了很强的区分。当要更改的内容从被测试类使用的类返回时,请使用存根,这样您就可以测试if语句的另一个分支。使用mock,当您不关心测试中的类返回什么时,只需调用另一个类的另一个方法,并且您希望确保调用了该方法。很整洁。然而,假设您有一个具有流利API的构建器,它使人们。您希望测试调用此生成器的方法。 所以最初,我想只是模拟构建器,然后myMethod()的单元测试应该检查具有

  • 我确实看到了一些关于在SonarQube中安装Groovy插件的相关答案,但是没有提到这是用于哪一个版本的SonarQube的解决方案(我不再看到这个插件可用)

  • 我在Spring控制器中加载数据库驱动pec.groovymethod.but我不知道如何调用Groovy脚本中的方法。有人能给我建议吗? 带着导游http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html 我只想访问http://127.0.0.1:8080/spock/test/spock然后运行数据