gpt4 book ai didi

unit-testing - 如何在 groovy 中使用 Spock 框架对日志记录错误进行单元测试

转载 作者:行者123 更新时间:2023-12-01 19:43:52 29 4
gpt4 key购买 nike

所以我有一个类,它有一个记录消息的方法:

class Car {
private Logger logger = LoggerFactory.getLogger(Car.class);


void startCar() {
logger.error("car stopped working");
}
}

如何测试是否使用 spock 测试框架记录了错误?

class CarTest extends Specification {
def "test startCar"() {
given:
Car newCar = new Car();

when:
newCar.startCar();

then:
// HOW CAN I ASSERT THAT THE MESSAGE WAS LOGGED???
}
}

最佳答案

您可以检查记录器上的错误调用

@Grab(group='org.spockframework', module='spock-core', version='0.7-groovy-2.0')
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.7')
@Grab(group='ch.qos.logback', module='logback-classic', version='1.1.2')

import org.slf4j.Logger

class MockLog extends spock.lang.Specification {

public class Car {
private Logger logger = org.slf4j.LoggerFactory.getLogger(Car.class);
void startCar() {
logger.error('car stopped working');
}
}

def "mock log"() {
given:
def car = new Car()
car.logger = Mock(Logger)
when:
car.startCar()
then:
1 * car.logger.error('car stopped working')
}
}

编辑:完整示例 https://github.com/christoph-frick/spock-test-logging

关于unit-testing - 如何在 groovy 中使用 Spock 框架对日志记录错误进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24439151/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com