我正在 coursera 上学习 scala 类(class),我被要求在最后一个练习中实现集合操作。我失败的测试之一叫做
exists should be implemented in terms of forall
存在和forall签名都是:
type Set = Int => Boolean
def forall(s: Set, p: Int => Boolean): Boolean = {}
def exists(s: Set, p: Int => Boolean): Boolean = {
/*should eventually call forall */
}
我问的不是实现,而是如何在scala中进行这样的单元测试
最佳答案
我可以想到三种方法:
1) 模拟forall
抛出一个特定的异常,然后调用exists
,看它是否抛出那个异常。
2) 检测代码并调用exists
,然后测试是否调用了forall
3) 使用 scala 宏,它分析 AST 的 exists
并递归检查它是否调用 forall
。
关于unit-testing - 测试函数是否在 Scala 的给定范围内被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208153/