Test Double

    [Unit Testing] Mockito 사용해 Test Double 만들기

    [Unit Testing] Mockito 사용해 Test Double 만들기

    이번 시간에는 Mockito를 사용해 Test Double을 만드는 방법을 살펴볼 것이다. Mockito를 사용하기 위한 환경 설정부터 시작하자. 환경설정 이전 글까지는 junit:junit:4.13.2 만으로 테스트가 가능했지만, 이번 글에서는 Mockito를 사용하므로 하나의 Dependency를 추가해야 한다. 바로 'org.mockito:mockito-inline:3.3.3' 이다. Kotlin을 사용한다면 mockito-inline을 추가해 주는 것이 좋다. dependencies { ... testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0' } 추가했으면 Load G..

    Test Double이란 무엇인가? Test Double의 종류, 사용법 알아보기

    Test Double이란 무엇인가? 다른 객체에 의존성이 있는 객체들은 테스트 하기 어렵다. 테스트 시 만약 의존성이 있는 객체의 진짜 인스턴스를 사용하면 이 의존성이 있는 객체에 테스트가 영향을 받게 된다. 이를 해결하기 위해 가짜 객체를 사용하는데 이를 Test Double이라 한다. Test Double의 종류 Test Double에는 Fake(가짜), Stub(스텁), Mock(목) 3가지 종류가 있다. Fake Fake는 테스트를 위한 가짜 구현을 하는 방식이다. 예를 들어 DB에 저장하는 코드를 가진 클래스가 있다고 하면 이를 메모리에 대신 저장하는 방식으로 가짜 구현을 한다. 즉, 프로덕션의 구현에 영향을 받지 않고 구현을 하는 것이다. 예를 들어 다음과 같이 데이터 레이어에서 Todo를 데..

    Unit Testing에서 Test Double이 필요한 이유는 무엇일까?

    Unit Testing에서 Test Double이 필요한 이유는 무엇일까?

    Test Double이란? class A에 대한 테스트를 하고 싶은데 class B가 다른 class B와 의존성이 있을 경우 어떻게 해야할까? 이 경우 간단하게 생각하면 class B를 인스턴스화 하면 된다고 생각할 수 있다. 하지만 이런 경우 class B를 실제로 인스턴스화 하면 class B로 인해 class A의 테스트에 문제가 생길 수 있다. 또한 class A의 테스트가 class B에 의존성을 갖는 것 또한 옳은 테스트 방향이 아니다. 또한 어떤 경우에는 classB를 인스턴스화 하는 것이 불가능할 수도 있다. 이런 문제들을 해결하기 위한 것이 바로 Test Double이다. Test Double은 class B를 임의의 객체로 대체해서 class B의 동작을 모방해서 class A에서 사..