有什么方法可以测试嵌套函数(最好使用 ScalaTest)?
例如,有没有办法g()
在下面的代码中进行测试:
def f() = {
def g() = "a string!"
g() + "– says g"
}
g
在外面是不可见的f
,所以我敢说不,至少不是没有反思。
无论如何,我认为测试g
会打破单元测试的概念,因为你永远不应该测试实现细节,而应该只测试公共 API 行为。g
如果测试f
失败,将错误跟踪到错误是调试过程的一部分。
如果测试g
对您很重要,请g
在f
. 不过,这可能会破坏您的设计。
另一个想法是在原始代码中assert
的调用之后调用。g
这将在测试期间执行,如果属性不成立,则会引发异常,导致测试失败。它也将出现在常规代码中,但可以被编译器删除,因为assert
(和同伴)是可忽略的(参见例如此处)。
您可以将方法设为 private[package-name] - 仍然会破坏设计,但将其保持为私有而不是受保护。
一般来说,我同意不应该测试私有方法这一事实,但如果你维护的代码写得不好......
private[example] def g() = "a string!"
def f() = {
g() + "– says g"
}
现在在同一个包中测试(示例)可以测试 g()