以tdd方式實現時,您是否聲明瞭類的內部或僅關於其公共api?TDD。斷言班級的內部是否正確?
可以說我正在實現一個二進制堆。添加一個對象後,我想斷言堆proerty被保留。 你是否有意義通過反思獲得內部數組,然後斷言其內容? 即
@Test
public void shouldPreserveHeapProperty() {
// when
heap.push(3);
heap.push(2);
heap.push(1);
// then
assertThat(Reflection.get(heap,"elements"))).contains(3,2,1);//made up Reflection class
}
也許它的公共API?但它需要每個測試 多個斷言即
@Test
public void shouldPreserveHeapProperty() {
// when
heap.push(3);
heap.push(2);
heap.push(1);
// then
assertThat(heap.pop()).isEqualTo(3);
assertThat(heap.pop()).isEqualTo(2);
assertThat(heap.pop()).isEqualTo(1);
}
什麼是更多,你將如何實施並行代碼的測試?有時,如果不訪問內部鎖,模擬死鎖或等待真的很困難。
使'elements'包私有,所以你不需要反射來測試它。 – ZhongYu