현명한 개발자가 되려면 좀 더 부정적인 자세가 필요하다.
네거티브 테스트라고 불리는 예외상황에 대한 테스트는 항상 빼먹기 쉽다. get()이라면 Id가 없을 때는 어떻게 되는지
getAll()이라면 결과가 하나도 없는 경우에는 어떻게 되는지를 검증하는 것이 네거티브 테스트다.

스프링의 개발자인 로드존슨은 항상 테스트를 작성할 때 네거티브테스트부터 만드는 습관이 있다고 한다.
정상적인 조건의 테스트부터 만들면 테스트가 성공하는 것을 보고 쉽게 만족해서 예외적인 상황은 빼먹고 넘어가기가 쉽기 때문이다.
예외상황에 대한 테스트를 자꾸 빼먹는 개발자라면 의도적으로 예외적인 조건에 대해 먼저 테스트를 만드는 습관을 들이는 것도 좋다.

예외상황에 대한 테스트는 반드시 필요하다.
아래의 리스트가 아무것도 없을 경우엔 query메소드에서 0을 리턴해주지만,
getAll에서 Exception을 낼수도 있고, query가 아닌 다른 방식으로 값을 가져오게 된다면, 다른 예외상황이 나타날 수 도 있기때문에
이런 예외에 대한 테스트는 항상 만들어 놓는 것이 좋다.
중복제거 userMapper메서드는 get()과 getAll() 2군데서 전부 쓰인다. private메서드로 추출
dataSource도 이제 필요없으니까 제거.