У меня что-то вроде этого:
fun doSomething(specifyInput: Base.() -> Unit) {
val spec = BaseImpl()
spec.apply {
specifyInput()
validate()
}
interface Base {
var a: String?
var b: String?
}
class BaseImpl(override var a: String?, override var b: String?) : Base {
constructor() : this(null, null)
fun validate() {
if (a == null) throw ExceptionForA()
if (b == null) throw ExceptionForB()
}
}
Это задача Gradle.
class A : DefaultTask(), Base by BaseImpl()
@TaskAction
fun doSomething() {
doSomething {
a = c
}
}
Это мой тест:
val buildFile = File(testProjectDir, "build.gradle.kts")
buildFile.createNewFile()
buildFile.writeText("""
tasks.register("task", A::class.java) {
c = "something"
}
""".trimIndent())
val result = testProjectDir.executeAndFailGradleRunner("task")
assertThat(result.output).contains("ExceptionForB")
Вы знаете, что мне нужно сделать, чтобы тест прошел?
Заранее спасибо.
Обновление: тем временем я расширил пример кода.
Нашел решение, которое я ищу.