首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时停止在TDD中进行测试

何时停止在TDD中进行测试
EN

Stack Overflow用户
提问于 2015-05-20 09:37:21
回答 3查看 89关注 0票数 2

我用TDD开发俄罗斯方块游戏。现在,我正在测试字段类的isEmpty()方法。

我已经编写了三个测试用例:

代码语言:javascript
运行
复制
@Test
public void shouldIsEmptyMethodReturnTrueForEmptyField() {
    Field field = Field.createStandartEmptyField();
    assertTrue(field.isEmpty());
}

@Test
public void shouldIsEmptyMethodReturnFalseIfCellInLowerLeftCornerIsFilled() {
    Field field = Field.createStandartEmptyField();
    field.fillCellAt(0, 0);
    assertFalse(field.isEmpty());
}

@Test
public void shouldIsEmptyMethodReturnFalseIfCellInLowerRightCornerIsFilled() {
    Field field = Field.createStandartEmptyField();
    field.fillCellAt(field.getWidth() - 1, 0);
    assertFalse(field.isEmpty());
}

我的isEmpty()方法如下所示

代码语言:javascript
运行
复制
public boolean isEmpty() {
    if (isFilledCellAt(0, 0)) {
        return false;
    }
    if (isFilledCellAt(getWidth() - 1, 0)) {
        return false;
    }
    return true;
}

因此,我可以进一步编写新的测试用例来测试俄罗斯方块字段中填充单元的每个组合。当我不得不停下来的时候,?使用TDD测试俄罗斯方块字段类的isEmpty()方法的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-20 13:06:26

等价划分可以帮助您减少编写测试用例的数量。在这里,你可以有三个案例: NoCells,OneCell,ManyCells。

边值分析是一种互补的方法,尽管它更适用于采用免费输入的方法。在这里,上下文实际上不允许在极端边缘(-1个单元格或大于一行的单元格数)下面或之后进行操作。

如果您真的想测试用例的组合,那么基于属性的测试或其他自动测试数据生成方法可能就是您所要寻找的。

票数 2
EN

Stack Overflow用户

发布于 2015-05-20 09:44:27

我认为这在很大程度上是基于经验,并且没有简单的方法来确定你的答案。在编写测试时,我会看到:

  1. 覆盖范围。我覆盖了所有的代码路径了吗?或者至少那些我觉得是问题的潜在原因
  2. 投入和产出。我是否涵盖了所有可能的输入和输出组合。在某些情况下,这是不切实际的(例如,如果您的方法将一个整数加到另一个整数中,您是否传入1,2,3.)
  3. 边缘案件。我的代码是否正确地处理边界条件?

因此,在编写代码时,我对需要断言的问题场景有一种感觉,以及我编写的每一行代码是否都以某种方式覆盖。如果我有相当数量的输入/输出场景要涵盖,我会考虑实现一个输入/输出表来断言,并让测试框架总共练习一次(例如,Groovy的斯波克使得这非常容易。Junit的参数化试验是另一个实现)

票数 1
EN

Stack Overflow用户

发布于 2015-05-20 12:48:03

这在很大程度上将是个人偏好。但是,如果您想遵循严格的TDD,那么一旦您不能再编写一个坏的测试,您就会想要停止。首先编写一个失败的测试,然后编写足够的代码通过测试。然后编写下一个失败的测试,并继续更新代码和重构,直到所有内容都是绿色的。如果您不能再编写失败的测试,那么您就不需要再编写测试了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30345890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档