我有一個對象,它有一個公共的無效方法,它只是修改內部狀態。我的一部分感覺好像應該有測試,因爲它是一種公開的方法,但你如何去測試它呢?你是否打擾或者是否依賴其他利用內部狀態改變的測試?您是否測試只修改對象狀態的方法?
要添加一個示例,我正在實現一個gap buffer,它有一個插入方法和一個moveCursorForward方法,它只是修改內部狀態。
感謝, 阿里
我有一個對象,它有一個公共的無效方法,它只是修改內部狀態。我的一部分感覺好像應該有測試,因爲它是一種公開的方法,但你如何去測試它呢?你是否打擾或者是否依賴其他利用內部狀態改變的測試?您是否測試只修改對象狀態的方法?
要添加一個示例,我正在實現一個gap buffer,它有一個插入方法和一個moveCursorForward方法,它只是修改內部狀態。
感謝, 阿里
我更喜歡這樣的方法單獨測試。例如,有兩種情況下爲「moveCursorForward」的方法: 1.光標是已經在緩衝器中的端 2.光標不在緩衝區的末尾
所以它是可能的情況下,1將是如果您不爲其創建特殊測試,則跳過。 換句話說,你可能會錯過一些邊界情況。
我認爲注射是你的答案。創建一個Cursor
對象並將其注入到Buffer
中。單元測試光標對象,以便你知道它完美地工作;)。由於遊標是有狀態的,並且已將其傳遞到緩衝區中,所以當您測試moveCursorForward
時,可以在遊標對象上聲明。
退房邁克爾羽毛的Working Effectively with Legacy Code
這也就是嘲諷的對象可能是有益的。