java - Junit 最佳实践 : Public method calling multiple private methods

标签 java unit-testing junit junit4

我开始为遗留代码库编写 JUnit 测试用例。其中一个公共(public)方法有多个 if 语句,并根据条件调用不同的私有(private)方法。
我应该只编写一个测试方法并测试所有条件吗?每个条件一种方法?

如果我为每个 if 条件编写单独的方法,我会不会失去一致性?

测试私有(private)方法的方法是什么?私有(private)方法逻辑可能比公共(public)方法更复杂。

最佳答案

方法的个数根据你要测试的场景的个数来定,与被测的东西有什么方法无关。

如果每个场景都采用自己的代码来设置,那么您将获得每个场景的一种测试方法。如果您可以对测试进行参数化,那么您可能能够拥有一种测试方法并为每个场景传递不同的数据。

重要的是,对于每个输入组合,您希望测试成功或失败独立于其他测试。如果您将所有测试硬塞进一个方法中,那么这种情况就不会发生,第一个测试失败将阻止其余测试运行。

关于java - Junit 最佳实践 : Public method calling multiple private methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841662/

相关文章:

java - 从 spring MVC Controller 传递 XML 文件

java - 如果文件具有 unix 或 dos 样式的行结尾,eclipse 如何计算?

unit-testing - Angular 2 Jasmine 无法绑定(bind)到 'routerLink',因为它不是 'a' 的已知属性

ruby - 为什么在不同的单元测试中访问此实例变量时为 nil?

unit-testing - 如何在 F# 中处理单元测试?

hibernate - 一起运行时 Maven Spring 测试失败,但单独成功(ehcache 关闭,IllegalTransactionStateException)

java - 如何使用JUnit测试Spring Boot中的服务层代码?

java - 如何重写方法将实例变量和局部变量相加,从而生成数据类型 Double 的新变量?

java - 确保单词具有特定长度

Android JUnit 测试因 java.lang.VerifyError 失败