首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖于另一个方法的实现的单元测试

依赖于另一个方法的实现的单元测试
EN

Code Review用户
提问于 2011-12-06 22:52:32
回答 1查看 282关注 0票数 0

我正在实现一个间隙缓冲器,并试图为insert方法编写一个测试,该测试目前看起来如下所示:

代码语言:javascript
复制
gapBuffer.insert('a')
assertEquals(gapBuffer.getText(), "a")
gapBuffer.insert('c')
assertEquals(gapBuffer.getText(), "ac")
gapBuffer.insert('d')
assertEquals(gapBuffer.getText(), "acd")
gapBuffer.moveCursorTo(1)
gapBuffer.insert('d')
assertEquals(gapBuffer.getText(), "abcd")

现在的问题是,这个方法不仅仅是测试插入方法,因为它取决于getText()moveCursorTo()方法的正确性。

注意:getText()moveCursorTo()方法并不简单,但确实有它们自己的测试。

EN

回答 1

Code Review用户

回答已采纳

发布于 2011-12-07 08:59:00

通常很难在没有getter的情况下测试setter,反之亦然。后门操纵在xUnit测试模式中详细讨论了这一点。

有些气味来自同一本书/网站:

  • 急切测试:一个测试验证了太多的功能。
  • 缺失断言消息:测试失败。在检查Test的输出后,我们无法确切地确定哪个断言失败了。

我将从上面的一个中创建至少三个测试:

代码语言:javascript
复制
@Test
public void testInsert() {
    gapBuffer.insert('a')
    assertEquals(gapBuffer.getText(), "a")
}

@Test
public void testInsertTwice() {
    gapBuffer.insert('a')
    gapBuffer.insert('c')
    assertEquals(gapBuffer.getText(), "ac")
}

@Test
public void testMoveCursorToAndInsert() {
    gapBuffer.insert("acd")
    gapBuffer.moveCursorTo(1)
    gapBuffer.insert('d')
    assertEquals(gapBuffer.getText(), "abcd")
}

它对缺陷定位有帮助。

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

https://codereview.stackexchange.com/questions/6579

复制
相关文章

相似问题

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