我可能会用 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:编译错误:此处不允许同伴
如何做到这一点?