SSAFY11th-book-study / book-study

0 stars 0 forks source link

[6.2.2] UserServiceImpl 의 테스트에서 반드시 스텁 대신 Mock을 써야 하는가? #56

Open sootudio opened 4 months ago

sootudio commented 4 months ago

p.416에서 UserServiceImpl의 upgradeLevels()가 리턴 값이 없는 void이기 때문에 메소드를 실행하고 결과를 받아서 검증하는 것은 불가능하고, DB와 고립된 테스트 방식으로 만들었기 때문에 UserDao같은 목 오브젝트에게 update()요청을 했는지 확인하는 간접적인(?) 방식으로 테스트를 진행해야 한다고 나와 있습니다.

그런데, 테스트에 대해서 잘 몰라서 이런 생각이 드는 건지는 몰라도... 혼자 읽고 생각해봤을 때는 테스트 코드에서 if(canUpgradeLevel(user)) 이 참이라면 결과값을 출력하는 코드를 넣어서 스텁 방식의 테스트를 할 수 있지 않을까? 하는 생각이 들었습니다.

sootudio commented 4 months ago

일단, 테스트 메소드는 일반 메소드를 상속해서 가져오는 것이기 때문에 반환타입을 바꾸는 것은 불가능하다.

그리고, console로 결과를 찍으면 jUnit에서 결과를 비교하는 자동 테스트가 불가능하고, 개발자가 직접 테스트 결과를 확인해야 하기 때문에 좋은 테스트 방식이 아니다.