
156
|
第
9
章
published: LocalDate = LocalDate.parse("2017-08-26")
) = MultiAuthorBook(isbn, title, authors, published)
val kotlin_in_action = createMultiAuthorBook()
如果将所有工厂函数放在顶层工具类中,那么你就可以在测试中重用它们。
9.4
使用不同的参数重复
JUnit 5
的测试
问题
如何使用一组给定的数据值执行 JUnit 5 测试。
解决方案
使用 JUnit 5 的参数化测试与动态测试。
讨论
假设你要使用不同的数据集来测试一个函数。JUnit 5 包含参数化测试,允许指定数据源,
并提供包括逗号分隔值(CSV)和工厂方法的选项。即使 JUnit 是一个 Java 库,但测试
可以使用 Kotlin 编写并用于测试 Kotlin 代码(就像本书的大部分内容一样)。
考虑一个计算斐波那契数的函数,其实现使用尾递归算法,参见示例 9-13。
尾递归在 4.3 节中已经讨论过。
示例 9-13:一个用于计算斐波那契数的尾递归函数
@JvmOverloads
tailrec fun fibonacci(n: Int, a: Int = 0, b: Int = 1): Int =
when (n) {
0 -> a
1 -> b
else -> fibonacci(n - 1, b, a + b)
}
一个斐波那契数被定义为前两个斐波那契数的和,其中