繁体   English   中英

junit - 测试从未实例化的类的私有方法

[英]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/Wizardtest/com/example/TestWizard )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM