Unit testing 单元测试类的最大长度?

Unit testing 单元测试类的最大长度?,unit-testing,Unit Testing,我使用JUnit和为我测试的每个类都有一个XXXTest类的标准实践。今天在编写一些测试时,我注意到测试类将达到10000行 是否有一些与单元测试类的最大长度相关的最佳实践?我应该将单元测试类拆分为多个类吗?您的单元测试应该尽可能详细,以达到代码中所需的置信度 我想说,如果您的测试类型那么长,很可能是因为您有很多设置/拆卸样板,这可能表明您需要抽象一些协作者(例如,使用接口和模拟),或者引入一些测试助手方法来重构样板。 这也可能表明您的类型做得太多,需要重构 如果重构类型,您可能会看到相应的测试

我使用JUnit和为我测试的每个类都有一个XXXTest类的标准实践。今天在编写一些测试时,我注意到测试类将达到10000行


是否有一些与单元测试类的最大长度相关的最佳实践?我应该将单元测试类拆分为多个类吗?

您的单元测试应该尽可能详细,以达到代码中所需的置信度

我想说,如果您的测试类型那么长,很可能是因为您有很多设置/拆卸样板,这可能表明您需要抽象一些协作者(例如,使用接口和模拟),或者引入一些测试助手方法来重构样板。 这也可能表明您的类型做得太多,需要重构


如果重构类型,您可能会看到相应的测试类型也变小。

我当然会将其拆分。虽然没有特别的限制,但如果我的类超过几百行,我开始注意抽象/分解


也许这是一个指标,表明您的测试类本身太大,和/或可能做了太多的事情?您能将该类拆分为不同的定义良好且自包含的组件吗?

这取决于这是否实际上暗示被测类(CUT)做得太多。如果是这样,那么显而易见的答案就是重构切割,这意味着相应地划分测试类。否则,如果您想要涵盖的不同场景数量如此之多,那么方法的数量可能无关紧要


10K行有点多,所以下一个问题是您是否可以重构测试以创建私有助手方法来清除任何重复的代码,使用对象母亲或模拟来减少重复,等等。或者您正在测试相同的场景,比如testing sum()对于1+1、2+2和3+3,它们不是边缘情况。

听起来您必须测试一个很大的类。您的单元测试应该集中于测试单个类,如果该类的功能太多,需要进行10000行单元测试,则需要将其拆分。通常,如果一个类接近200行,您需要将其重构为几个类。

在这种情况下,有大量场景需要测试。测试类有40多个测试方法。通常情况下,一个应用程序类对应一个测试类,但没有规则禁止将测试拆分为单独的测试类。有些人可能会说这是一种气味,但这仍然是你的决定。被测试的类很大——大约1500行。我曾考虑过重构,但考虑到类正在执行的任务,重构并不简单。这听起来像是一个大型类。您可能应该问问自己,该类是否正在执行一个明确定义的任务,以及(如果不是)是否需要为其他类提供一个门面来执行此任务