我正在实现一个间隙缓冲器,并试图为insert方法编写一个测试,该测试目前看起来如下所示:
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()方法并不简单,但确实有它们自己的测试。
发布于 2011-12-07 08:59:00
通常很难在没有getter的情况下测试setter,反之亦然。后门操纵在xUnit测试模式中详细讨论了这一点。
有些气味来自同一本书/网站:
我将从上面的一个中创建至少三个测试:
@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")
}它对缺陷定位有帮助。
https://codereview.stackexchange.com/questions/6579
复制相似问题