Я бы хотел написать параметризованный тест в Kotlin. В зависимости от входных параметров, тестируемая функция должна выдавать пользовательское исключение или она должна завершиться успешно, если все в порядке. Я использую JUnit Jupiter 5.3.2.
Это упрощенная версия того, что у меня сейчас (на самом деле есть несколько входных параметров). Это работает, но это немного уродливо, так как мне нужно дважды включить вызов протестированного метода:
companion object {
@JvmStatic
fun paramSource(): Stream<Arguments> = Stream.of(
Arguments.of(1, true),
Arguments.of(2, false),
Arguments.of(3, true)
)
}
@ParameterizedTest
@MethodSource("paramSource")
open fun testMyServiceMethod(param: Int, shouldThrow: Boolean) {
if (!shouldThrow) {
// here the exception should not be thrown, so test will fail if it will be thrown
myService.myMethodThrowingException(param)
} else {
assertThrows<MyCustomException>{
myService.myMethodThrowingException(param)
}
}
}
Есть ли лучший подход к этому?