微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在ScalaTest中的另一个套件中重复使用测试

如何解决在ScalaTest中的另一个套件中重复使用测试

我有以下ADT:

sealed trait TestAdt

case class First(i: Int) extends TestAdt
case class Second(j: String) extends TestAdt
case class Third(k: Long) extends TestAdt

我有一个使用TestAdt并具有以下实现的函数

def foo(testAdt: TestAdt): Int = testAdt match {
    case f: First => fooFirst(f)
    case j: Second => fooSecond(j)
    case k: Third => fooThird(k)
} 

private def fooFirst(firstAdt: First): Int = //...
private def fooSecond(secondAdt: Second): Int = //...
private def fooThird(thirdAdt: Third): Int = //...

我对所有fooFirstfooSecondfooThird函数编写了测试,如下所示:

class FooFirstTest extends AnyFunSuite with Matchers {
    //test cases
}

class FooSecondTest extends AnyFunSuite with Matchers {
    //test cases
}

class FooThirdTest extends AnyFunSuite with Matchers {
    //test cases
}

现在,我想测试功能foo本身,因此似乎很自然地只需重用分别为每个分支实现的测试用例:FooFirstTestFooSecondTest和{ {1}}。例如,FooThirdTest涵盖了功能FooFirstTest的一些测试用例,因此功能fooFirst的情况也成立。

问题::如何重用功能fooFooFirstTest和{{ 1}}相应地为功能FooSecondTest编写测试?

FooThirdTest

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。