테스트 시작하기, 좋은 시작~

H가 우리 팀으로 합류했다.
계속 테스트에 대한 이야기를 했더니 이번 수정사항에 대해서 테스트 코드를 짜왔다.
오호...

- 기존 소스

1. 별도의 main 메서드를 이용했다.
그래, 방법이 중요한게 아니야.

2. 테스트를 해야 하는 부분이 해당 업무의 끝부분이다.
데이터베이스 접근도 많이 하고 각종 설정이 필요하다.
그래서 테스트하려고 하는 부분의 소스 코드 조각을 따로 떼어서 테스트 코드에 복사했다.
필요한 부분만 복사해서 테스트한거는 나름대로 고민한 끝에 나온 방법이네.
그런데 복사한 소스는 중복이 되고, 나중에 업무 로직이 변경되어서 소스가 변경되었는데 테스트 코드는 변경되지 않을 수도 있잖아.

3. 테스트하려는 코드내에서 데이터베이스를 접근하는 코드가 있다.
데이터베이스를 접근하는 코드는 위와 같이 해서 제거했는데 이 부분은 뺄 수가 없다.
그래서 별도의 메서드로 만들어서 테스트 데이터를 리턴하게 만들었다.
좋은 시도다.
ERPDAO가 외부에서 변경이 가능했다면 더 좋았을텐데.
아니면 이 부분도 별도의 메서드로 빼서 구현해 놓으면 교체가 쉬울텐데.
ERPDAO처럼 우리가 데이터를 마음대로 변경할 수 없는 경우 테스트하기가 곤란하다.
지금 테스트를 통과하는 데이터가 내일은 없을지도 모른다.
이런 곳은 Mock이 좋겠다. 아니면 동의어를 사용해서 로컬에 테이블을 만든다.

- H가 작성한 테스트 코드
- 좀 더 개선한다면