[英]junit - testing a private method of a class that is never instatiated
所以我们的堆栈是在Spring
,并且只能从UI更改中调用类Wizard
。 在xhtml
它的调用方式如下:
`<.....onchange="changeValue()" value="wizard.type.name">`
该类永远不会在代码中的任何地方实例化,并且该类中唯一的构造函数是:
public Wizard(){}
并说getName()
调用私有方法getWizardWeapon()
- 我如何在一个单独的项目中测试junit中的getWizardWeapon()
(比如TestWizard
但是在同一个工作区中)?
你不应该测试私有方法。 测试应该只通过公共接口方法。 所以你的测试都应该通过getName()
。
通过不测试私有方法,您的测试不那么脆弱,因为如果您更改了私有方法,测试将会中断。 知道修改私有方法不应该破坏任何东西,只要公共方法仍然做正确的事情(这些都被测试覆盖),这样更容易维护和重构类。
从API的角度来看,我也发现getName()
也需要getWizardWeapon()
,这很奇怪。 除非武器是名称的一部分(这很奇怪)。
如果你不能通过私有方法只通过调用公共方法来运行所有代码路径,那么你可能有可以删除的死代码吗?
作为@dkatzel的补充回答:如果你确实需要测试一些实现细节,但又不想将它们暴露给外部世界,那么make getWizardWeapon()
不是private
,而是package private
并将你的测试用例放在同一个包中(但当然在单独的源目录中,如main/com/example/Wizard
和test/com/example/TestWizard
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.