我希望能够将大型测试拆分为较小的测试,以便当较小的测试通过时,它们暗示大型测试也将通过(因此没有理由运行原始的大型测试)。我之所以要这样做,是因为较小的测试通常需要较少的时间,较少的精力并且也不那么脆弱。我想知道是否有测试设计模式或验证工具可以帮助我以可靠的方式完成此测试拆分。

我担心当有人更改一组较小测试中的某些内容时,较小测试和原始测试之间的连接会丢失。另一个担心是,较小的测试集并不能真正覆盖大型测试。

我要针对的示例: 通用标签

有帮助吗?

解决方案

我要提出的第一个建议是将测试重新分解为红色(失败)。为此,您必须暂时破坏生产代码。这样,您就知道测试仍然有效。

一个常见的模式是每个“大型”测试集合使用单独的测试夹具。您不必遵循“在一个测试类中对一个类进行所有测试”的模式。如果一组测试相互关联,但与另一组测试无关,则将它们放在自己的类中。

对于大测试,使用单独的类来保存各个小测试的最大好处是,您可以利用设置和拆卸方法。在您的情况下,我将移动您发表评论的行:

// this should be the same in both tests and it should be ensured somehow

设置方法(在JUnit中,使用@Before注释的方法)。如果您需要完成一些非常昂贵的设置,那么大多数xUnit测试框架都可以定义一种在所有测试之前运行一次的设置方法。在JUnit中,这是一个public static void方法,具有@BeforeClass批注。

如果测试数据是不变的,我倾向于将变量定义为常量。

将所有这些放在一起,您可能会有类似的内容: 通用标签

其他提示

我能建议的只是这本书 xUnit测试模式。如果有解决方案,应该在那里。

theBigTest缺少对B的依赖性。也可以将smallerTest1嘲笑B依赖性。在smallerTest2中,您应该模拟InputFromA

为什么要像以前那样创建依赖关系图?

A接受一个B,然后当A::process Input时,您将processracracedicetagcode张贴在InputFromA中。

保持大测试并重构BA来更改依赖关系映射。

[EDIT] 以回应评论。

@mkorpela,我的意思是,通过查看代码及其依赖关系,您可以开始了解如何创建较小的测试。BA有依赖性。为了使其完成其基因编码标签,它必须使用基因编码标签的基因编码标签。因此,B依赖于process()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top