1

我可能会用 case 被测类有很多用例,所以它被划分为内部类的结构。我想编写参数化测试用例以减少样板和代码重复。为此,我想采用方法源的方法。待测类

class UnderTest
{
    testThisMethod(a:String,b:String?){
        // Do something
        externalInterface.call(a?:b) 
    }
}

测试用例结构

internal class A() {
    private val externalService = mockk<ExternalService>
    private val test: UnderTest(externalService)

    // Some general tests
    //---Position Outter
    inner class A {
        //--- Position A
        inner class B {
            //--- Position C
            @ParameterizedTest
            @MethodSource("provideArguments")
            fun `with arguments external service create object`(
                argument1: String,
                argument2: String,
                expected: String
            ) {
                // Some code
                verify {
                    externalService.call(expected)
                    //some more verification
                }
            }
        }
    }
}

为了提供参数提供者方法,我尝试将其放置在位置并得到以下错误

  • 位置外部:初始化错误:在类中找不到工厂方法
  • 位置 A、B:编译错误:此处不允许同伴

如何做到这一点?

4

0 回答 0