【发布时间】:2012-02-18 07:14:16
【问题描述】:
所以我对软件测试非常陌生,并且正在考虑在我的一个应用程序中添加几个测试。我有一个公共方法 addKeywords() 一路调用私有方法 removeInvalidOperations()。这个私有方法调用外部 API,大约 50 行代码。因为我认为这是一个有点复杂的方法,所以我想通过调用 addKeyword() 方法来测试它而不必这样做。然而这似乎是不可能的(至少通过 JUnit 是不可能的)。
我查看的信息表明,测试私有方法的愿望可能是代码异味。有人建议这可能是一个迹象,表明应该将其重构为一个单独的类并公开。此外,还有一些建议,如果您真的需要,那么您可以对您的生产代码进行编辑,例如更改私有方法的可见性。
我真的不明白为什么我当前的代码设计有问题,但也不喜欢编辑生产代码以满足我的测试需求的想法。
正如我所说 - 我对测试很陌生,因此非常感谢任何帮助。另外,如果我可以提供任何进一步的信息来帮助解答,请告诉我。
【问题讨论】:
-
我经常使用的一个快速解决方法是将访问权限从私有更改为默认(包)并评论
// package access for unit tests only.这是否可以接受取决于您的编码标准以及您对其他程序员的信任程度要理解这种方法,即使包访问,也不是“真正的 API”。
标签: java unit-testing testing integration-testing