unit-testing - 测试函数是否在 Scala 的给定范围内被调用

标签 unit-testing scala junit

我正在 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/

相关文章:

visual-studio-2008 - 将 MSTEST 类移动到它们自己的文件夹中会中断 "Create Unit Tests..."

python - 为什么 'unittest.main()' 执行后 python 不执行任何操作?

java - Spring/Junit 访问兄弟类

java - 如何在mockito+Junit测试中捕获或模拟意外异常?

java - Robolectric 未正确处理 getApplicationContext() - NPE

angular - 在单元测试中使用参数模拟 ngrx 存储选择器(Angular)

c# - 无法为通用可枚举任务设置起订量模拟

scala - Kotlin 泛型继承

scala - 在 Scala 中实现产品类型,并在其各个部分上使用通用更新功能

scala - 无法在带有cats库的函数中调用map方法