所以我们的堆栈在 Spring
上,并且说类 Wizard
只会从 UI 更改中调用。在 xhtml
上它是这样调用的:
`<.....onchange="changeValue()" value="wizard.type.name">`
类永远不会在代码中的任何地方实例化,类中唯一的构造函数是:
public Wizard(){}
然后说 getName()
调用私有(private)方法 getWizardWeapon()
- 我如何在 junit 中测试 getWizardWeapon()
单独的项目(比如 TestWizard
但在同一工作区中)?
最佳答案
您不应该 测试私有(private)方法。测试应该只通过公共(public)接口(interface)方法。所以你的测试都应该通过 getName()
。
通过不测试私有(private)方法,您的测试就不那么脆弱了,因为如果您更改私有(private)方法,测试就会中断。知道修改私有(private)方法不应该破坏任何东西,只要公共(public)方法仍然做正确的事情(这些都包含在测试中),维护和重构类就容易得多。
从 API 的角度来看,我还发现 getName()
还需要 getWizardWeapon()
很奇怪。除非武器是名字的一部分(这很奇怪)。
如果您不能仅通过调用公共(public)方法来通过私有(private)方法执行所有代码路径,那么您是否有可以删除的死代码?
关于java - junit - 测试从未实例化的类的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916019/