在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 (将#修改为@)