unit-testing - 为此方法编写 JunitTestCases 的合适方法是什么

标签 unit-testing testing junit

下面的代码是我的方法逻辑。

pulic String getData()
{ 
if (leg.length == 4)
      return "ATE";
  else  if (leg.length == 2) {
      return "FTE";
      }
    if (leg.length == 3) {
      if (xr1.KotilaType.equals("CST")) {
        return "HTE";
      }
      return "DTE";
    }
   return "BTE";
  }

按照我的指示,我需要开始为此方法编写 Junit 测试用例。

如您所见,此方法中只有一个方法和多个条件。

现在我的问题是, 我们是否需要为每个条件编写一个单独的 Junit 测试用例(一个单独的方法)??

或者仅编写一个 Junit TestCase 并涵盖上述所有条件就足够了吗??

我是junit的新手,不是专家,请指导我为上述方法编写JunitTestCases的合适方法是什么??

最佳答案

这是风格问题。这是两种选择:使用一种方法:

public void testAll() {
    assertEquals("ATE", getData(leg4));
    assertEquals("FTE", getData(leg2));
    // etc.
}

使用一种测试方法/组合:

public void testLength4() {
    assertEquals("ATE", getData(leg4));
}

public void testLength2() {
    assertEquals("FTE", getData(leg2));
}

前者的优点是很容易看到所有组合,因为它们都在一个地方。如果有很多组合或组合很复杂,这将非常有用。

后者的优点是每个组合都有一个测试,因此很容易定位问题,因为(理论上)只有一个测试会失败。缺点:您很快就会用完测试方法的名称。 testLength4、testLength2、testLength3WithCST、testLength3WithoutCST。当您有很多组合时(比如一年中每个月进行一次测试),这种缺点会变得尤为严重。

大多数时候,我使用一种测试方法/测试用例,但如果组合的数量开始变多,我就会使用一种方法。这包含所有组合,因为我希望能够一次看到我的所有组合,看看我是否遗漏了任何组合。

关于unit-testing - 为此方法编写 JunitTestCases 的合适方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051019/

相关文章:

ruby-on-rails - ActiveRecord::Fixture::FixtureError: 表 "books"没有名为 "loves"的列

php - 支持链接方法的模拟对象

validation - 软件测试与软件评估

hibernate - Spring/Hibernate/JUnit - 没有绑定(bind)到线程的 hibernate session

java - 无法显示来自 @Ignore 的调试信息

spring - Mockito 的 when() 方法无法正常工作

python - 如何在不丢失身份验证的情况下模拟 Session.request?

java - Gradle 编译但不运行 TestNG 测试

Python:如何让用户输入自己的解决方案到答案键

testing - 如何查找在 MTM 2010 中创建的测试计划的历史记录?