单元测试 – Spock数据驱动测试,用类来测试“instanceof”断言

我有一个测试,我想测试一个特定的结果是一种类.
使用instanceof关键字断言.遗憾的是,我没有弄清楚如何在数据表中实际提供数据值expectedClass而没有实际使用instanceof调用它的问题.我认为关键字instanceof是这里的问题,因为它只接受类/接口名称.知道如何以其他方式测试我想测试的内容吗?

class BattleResolverFactoryTest extends Specification {

    def uut = new BattleResolverFactory()

    @Unroll
    def "should return proper BattleResolver for given ConflictType"(Conflict.ConflictType conflictType,Class<? extends BattleResolver> expectedInstance) {
        when:
        def battleResolver = BattleResolverFactory.getResolver(conflictType)
        then:
        battleResolver instanceof expectedClass
        where:
        conflictType                            | expectedClass
        Conflict.ConflictType.INFANTRY_CONFLICT | TestInfantryResolver
        Conflict.ConflictType.ARMOR_CONFLICT    | TestArmorResolver

    }
}

解决方法

您可以像这样使用isCase:

class BattleResolverFactoryTest extends Specification {

    def uut = new BattleResolverFactory()

    @Unroll
    def "should return proper BattleResolver for given ConflictType"(Conflict.ConflictType conflictType,Class<? extends BattleResolver> expectedInstance) {
        when:
        def battleResolver = BattleResolverFactory.getResolver(conflictType)

        then:
        expectedClass.isCase(battleResolver)

        where:
        conflictType                            | expectedClass
        Conflict.ConflictType.INFANTRY_CONFLICT | TestInfantryResolver
        Conflict.ConflictType.ARMOR_CONFLICT    | TestArmorResolver

    }
}

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...