我有一个类A
,它有私有方法a
和b
以及公共方法c
。
测试涵盖了a
和b
方法。
公共方法c
是带参数的,因此它可以用if stmt
调用a
或b
我想测试方法c
与behavior-based test
(测试a
调用一些参数和b
调用其他)。我不知道如何用ScalaTest
和ScalaMock
实现这一点
类代码的一部分
protected final def generate(leftBranch: List[L], leftPoint: L, rightBranch: List[L], rightPoint: L): C = {
val lEmpty = leftBranch.isEmpty
val rEmpty = rightBranch.isEmpty
if (lEmpty && rEmpty) {
val cc = leafOrdering.compare(leftPoint, rightPoint)
if (cc < 0) {
nextOrExpand(leftPoint){ p =>
if (leafOrdering.compare(p, rightPoint) < 0) {
usePoint(p)
} else
expand(leftPoint)
}
}
else if (cc == 0)
throw SamePointException()
else
throw LowerRestrictionException()
}
else if (lEmpty) {
val cc = leafOrdering.compare(leftPoint, rightBranch.head)
if (cc < 0)
nextOrExpand(leftPoint){ p =>
if (leafOrdering.compare(p, rightBranch.head) <= 0) {
usePoint(p)
} else {
expand(leftPoint)
}
}
else if (cc == 0)
minimalRestricted(List(leftPoint), startBranchWith, rightBranch.tail, rightPoint)
else
throw LowerRestrictionException()
}
else if (rEmpty)
if (leafOrdering.compare(leftBranch.head, rightPoint) < 0)
next(leftBranch, leftPoint)
else
throw LowerRestrictionException()
else {
if (leafOrdering.compare(leftBranch.head, rightBranch.head) < 0)
next(leftBranch, leftPoint)
else {
throw LowerRestrictionException()
}
}
}
方法nextOrExpand
,usePoint
,expand
,minimalRestricted
,next
是私有的并经过测试。generate
方法是一个需要测试的公共方法。
1条答案
按热度按时间f0ofjuux1#
如果我没有记错的话,使用
behavior-based test
,您希望像here示例那样编写测试如果这是您想要的,您将能够看到您可以使用不同的风格
mix different traits
来编写测试。另外,根据您选择的是哪一个,测试的输出也会不同。scalatest还提供了一个丰富的DSL,可以让您编写接近自然语言的测试。您可以使用提供不同方法的matchers,如
have
、be
、contains
等