单元测试类的最大长度?

时间:2009-07-15 14:27:20

标签: unit-testing

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

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

4 个答案:

答案 0 :(得分:5)

您的单元测试应该尽可能详细,以达到您的代码所需的信任级别。

我会说,如果你的测试类型很长,很可能因为你有很多设置/拆卸样板,这可能表明你需要抽象一些协作者(例如使用接口和模拟),或者介绍一些测试帮助器重构样板的方法。 它也可能表明你的类型做得太多,需要重构。

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

答案 1 :(得分:4)

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

10K行有点多,所以接下来的问题是你是否可以重构测试以创建私有帮助方法来清除任何重复的代码,使用Object Mothers或Mocking来减少重复等等。或者你或者你'测试相同的场景,比如测试sum()与1 + 1和2 + 2以及3 + 3,它们不是边缘情况。

答案 2 :(得分:1)

我当然会把它分开。虽然没有特别限制,但如果我的班级超过几百行,我会开始注意抽象/分解。

也许这表明你的受测试的课程本身太大了,和/或可能做了太多的事情?你能否将这个类别拆分为不同的定义明确且独立的组件?

答案 3 :(得分:1)

听起来你需要考虑大量的课程。您的单元测试应该专注于测试单个类,如果该类具有如此多的功能,需要10000行单元测试,则需要将其拆分。通常,如果一个类接近200行,则需要将其重构为几个类。