728x90
반응형
단위 테스트
도메인 특화 테스트
앞서 9-1 에서 구현간 기법으로 주로 API 위에다 함수와 유틸리티를 구현한 후
테스트 코드를 작성함으로 코드작성과 높은 가독성을 가진다.
테스트 코드는 쉽고 간결하고 이해하기 쉽게 해야하지만
효율성의 측면에서는 효율적일 필요는 없다.
온드가 급격하게 떨어지면 경보, 온풍기, 송풍기가 모두 가동 되는지 확인하는 코드.
func TestTurnOnLoTempAlramAtThreashold(t *testing.T)
{
hardware.SetTemp(WayTooCold)
controller.Tic()
tests.AssertEqual(t, hardware.HeaterState(), true)
tests.AssertEqual(t, hardware.BlowerState(), true)
tests.AssertEqual(t, hardware.CoolerState(), false)
tests.AssertEqual(t, hardware.HighTempAlram(), false)
tests.AssertEqual(t, hardware.LowTempAlram(), true)
}
위에서 tic 이라는 알수 없는 함수는 WayTooCold() 로 옮겨서 숨기며
기능 단위로 필요한 부분만 볼수 있도록 변경 하였다. 또한, 테스트 코드 함수마다 Assert() 함수를 한개만 사용하도록 하는 것이 더욱 이해하기 쉽고 빠르다.
(저자 : 단일 Assert는 훌룡한 규칙 이지만, 때로는 여러 Assert를 작성하기도 한다고 한다.)
테스트 결과값에 대해서는 규칙 위반 이지만
하드웨어의 경우 제한된 자원을 사용하며 테스트 환경이므로 문제없는 방식이다.
func TestTurnOnLoTempAlramAtThreashold(t *testing.T)
{
hardware.WayTooCold()
result := hardware.GetState()
tests.AssertEqual(t, result, "HBchL")
}
func (h *HardWare) GetState()return string{
var state string
if h.heaterState {
state = "H"
} else {
state = "L
}
...
return state
}
728x90
반응형
'IT > Clean Code' 카테고리의 다른 글
[Clean Code] 10-1 클래스 (0) | 2021.09.06 |
---|---|
[Clean Code] 9-3 깨끗한 테스트 (0) | 2021.09.06 |
[Clean Code] 9-1 TDD (0) | 2021.09.06 |
[Clean Code] 7-1 예외처리 (0) | 2021.09.06 |
[Clean Code] 6-2 객체지향 절차지향 2 (0) | 2021.09.06 |