Java JUnit Refactoring测试删除相同的测试

时间:2015-10-29 10:11:07

标签: java unit-testing junit

我是JUnit的新手。目前有两个单独的JUnit测试类,它们都有4个测试,除了其中一个测试对于两个测试类都是相同的。是否有一种简单的方法可以以某种方式重构代码,以便我可以以某种方式导入'对两个班级的共同考验?

我考虑过创建一个超类来提取常见的测试,但是在这种情况下看起来有点矫枉过正。

有什么建议吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

它取决于上下文,但一般来说,您应该应用与普通代码相同的重构技术:

  • 这两个类继承父类,提取父类中的公共代码是有意义的
  • 或者你也可以在你从两个测试类中调用的Helper类中提取代码
  • 或者您正在使用两组不同的数据测试相同的内容,在这种情况下使用参数化测试(TestNG中的数据提供程序)可能是解决方案
  • 或者代码相同的事实是巧合,因为测试类没有多少共同之处,在这种情况下,重复可能会更好......

答案 1 :(得分:1)

使用超级课程并非闻所未闻。但是,如果您的层次结构增长,这可能会很痛苦。我已经看到构建超级类网只是为了发现在调试时很难遵循代码(特别是当它不是你的时候)。尽管如此,它仍然是一个可行的解决方案。

将常用方法解压缩到一个单独的类中,然后只需导入它。如果在类之间出现更多代码,则可以添加更多可能在类之间通用的方法。

如果您没有完成单元测试,您可能会发现这些单元测试可能会发生变化,因此请记住,如果需要,您也可以稍后参数化这些方法。

希望这有帮助。