testing - 你能在 scala 中测试嵌套函数吗?

标签 testing scala scalatest

有什么方法可以测试嵌套函数(最好使用 ScalaTest)?

例如,有没有办法在下面的代码中测试g():

def f() = {
  def g() = "a string!"
  g() + "– says g"
}

最佳答案

gf 之外是不可见的,所以我敢说不,至少不是没有反射。

我认为测试 g 会打破单元测试的概念,无论如何,因为您不应该测试实现细节,而应该只测试公共(public) API 行为。如果 f 的测试失败,则跟踪 g 中的错误是调试过程的一部分。

如果测试 g 对您很重要,请将 g 定义为 f 之外的( protected )方法。不过,这可能会破坏您的设计。

另一个想法是在原始代码中调用 g 之后调用 assert。这将在测试期间执行并在属性不成立时引发异常,从而导致测试失败。它也会出现在常规代码中,但可以被编译器删除,因为 assert(和同伴)是可取消的(参见例如 here)。

关于testing - 你能在 scala 中测试嵌套函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333298/

相关文章:

ruby-on-rails - 如何使用 fixtures/yml 文件中的数据加载 neo4j 测试数据库?

scala - 如何比较两个 Traversable 包含完全相同的元素?

ruby-on-rails - Rails 测试中缺少记录

javascript -/dev/null 用于 http 请求

scala - 将其传递给高阶函数后,函数隐式参数不再如此

scala - Unresolved 依赖项 — com.typesafe.play#sbt-plugin;2.4.3 : not found

xml - 来自 Maven 的 Scalatest : How to tag and filter out an entire Suite?

scala - 使用 Finagle 重试失败

testing - 使用 Jmeter 或 Badboy 记录 AJAX 请求和弹出窗口

Scala 通用函数