Java:类中的代码重复及其Junit测试用例

时间:2012-05-28 07:44:16

标签: java junit refactoring

我一直在编写代码,通过修改它们的值来处理对象的某些字段。为了测试它,我首先编写了一个JUnit测试用例,它递归遍历一个对象的字段并确保它们被正确修改。 CUT(被测试类)的变化类似:它递归遍历对象的字段并根据需要修改它们。

因此递归遍历字段的代码在测试用例和CUT中保持不变,并且当前是重复的,这是针对DRY的。所以我有两个问题:

1)您是否在项目中遇到过这种情况?如果是的话,你是否申请了DRY,或者让这种重复仍然存在?

2)如果我将这个公共代码放在一个util方法中,我将需要编写一个测试用例来测试它,这将再次涉及递归遍历字段。那么如何在不增加任何重复的情况下解决这个问题呢?

2 个答案:

答案 0 :(得分:4)

您刚刚点击ugly mirror testing anti-pattern。如果您的CUT有错误,很可能您会将其复制到您的测试用例中,主要是验证错误是否存在。

你必须向我们展示一些代码,但基本上你的测试用例应该更简单,没有for循环,没有条件 - 只是断言。如果您的生产代码在复杂的数据结构上进行了一些奇特的遍历,反射等操作 - 创建一个测试Java对象并在单元测试中手动测试每个字段。

答案 1 :(得分:1)

使用访问者模式抽象遍历树,然后在测试用例和生产代码中构建访问者。并单独测试访客基础设施。

相关问题