java - junit - 测试从未实例化的类的私有(private)方法

标签 java spring spring-mvc junit

所以我们的堆栈在 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/

相关文章:

unit-testing - 带有 Sonar 的 Jenkins 上的 spring-test-mvc 问题

java - 为什么我的 @Async Future<T> 会阻塞?

jsp - 如何将spring服务 Autowiring 到jsp中?

java - TLS 1.2 - key 对大小和加密 key 长度

java - 使用 Spring JDBC 模板从数据库检索时间戳值

java - 如何以用户友好的文本以编程方式替换 Spring 的 NumberFormatException?

java - Spring递归加载应用程序上下文

java - CarPark 不是抽象的,不会重写抽象方法(需要帮助)

java - 通过外部属性禁用 spring 方法缓存

java - 使用 JAVA Axis 开发的 SSH 的 Web 服务中出现错误