首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:类中的代码复制及其Junit测试用例

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

Stack Overflow用户
提问于 2012-05-28 15:44:16
回答 2查看 848关注 0票数 1

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

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

1)您在项目中遇到过这样的情况吗?如果是,您是否应用了DRY,或者让这样的复制保持原样?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-28 15:50:46

您刚刚命中了ugly mirror testing anti-pattern。如果您的CUT有bug,您很可能会将其复制到您的测试用例中,实质上是验证bug是否仍然存在。

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

票数 4
EN

Stack Overflow用户

发布于 2012-05-28 15:49:44

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10781050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档