所以我有一个类,它有一个记录消息的方法:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。