java - 方法中的每个可能分支都应该有一个单独的 junit 吗?

标签 java unit-testing testing junit

这更像是一个设计问题。

假设您有这样的方法(作为示例):

if (x == 5) {
  c = 1;
} else {
 if (z != 2) {
  b = 6;
} else {
   a = 3;
}

您认为为每个可能的分支配备一个 junit 是最佳实践吗?即,testx5、test xnot5znot2、testxnot5z2 等,或类似的东西:

void testMethod() {
// x is 5
test/assert code;

// x not 5, z not 2
test/assert code;

// x not 5, z is 2
test/assert code

// etc
}

编辑:明确一点,我的目标是完成代码覆盖。我只想知道是否应该为每个分支进行新测试或将它们组合在一个测试中的意见。感谢您的输入。

最佳答案

JUnit FAQ似乎表明最好用更少的断言进行更多的测试,因为 JUnit 只会报告测试方法中的第一个断言失败。使用一种方法,如果您破坏了 x = 5 案例,您将无法判断 x != 5 案例中的任何一个是否仍在工作。

关于java - 方法中的每个可能分支都应该有一个单独的 junit 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8052306/

相关文章:

security - 如何使用独立的 Selenium 服务器测试 https web 应用程序?

testing - 用于人工驱动测试的 BDD 风格测试框架

java - Jasper 报告 Excel 导出错误

javascript - 如何对 jQuery 选择器进行单元测试?

php - 在 Laravel 8 的单元测试中调用未定义的方法 Tests\Unit\TopPageTest::get()

ruby - 如何从 Ruby 运行 Excel 宏?

rest - ALM REST 有什么方法可以访问测试参数吗?

java - 即使步骤仍在运行,如何计算 ItemReader 中的 stepReads 以使中间结果可用?

java - sendkeys() 在 selenium webdriver 中不起作用

java - 尝试在 JAVA 中合并两个数组时获得额外的数字