분류 전체보기
[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이 필요한 이유는 무엇일까?
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에서 사..
Kotlin에서 사용할 수 있는 JUnit assert 종류 알아보기 : assertEquals, assertTrue, assertThrows, assertNotNull
이 글을 쓰게 된 이유 Java의 JUnit을 기반으로 문서들을 보다보니, Java의 assert와 Kotlin의 assert가 다른 것들을 알게 되었다. 예를 들어 Java에서 asserThat을 사용해 동일성을 테스트 하려면 다음과 같이 작성해야 한다. assertThat("a", is("a")) 하지만 이를 Kotlin의 assert로 바꾸면 다음과 같이 된다. assertEquals("a","a") 이러한 차이가 여러개 있다 보니 Unit Testing을 알아보는데 방해가 되어서 이번 글에서 정리하고 넘어가고자 한다. Kotlin의 assert Kotlin에는 다양한 assert가 있다. 그 중 자주 사용되는 것은 assertEquals, assertNotEquals, Assert.assertTr..
IntelliJ, Android Studio에서 Test Coverage 확인과 Test Coverage의 한계점
Test Coverage 란 Test Coverage란 작성한 테스트가 작성한 코드의 얼마만큼을 테스트 하고 있는지에 대한 지표이다. Test Coverage 확인하기 Test Coverage를 확인하기 위해서는 Test 클래스의 실행 버튼에서 3번째 버튼 'Run [클래스명] with Coverage' 를 누르면 된다 . 이를 실행하면 MinuteValidator에 대한 테스트 커버리지가 다음과 같이 나오게 된다. 커버리지는 Class 단위, 메서드 단위, 라인 단위로 모두 확인할 수 있다. 또한 MinuteValidator 클래스 내부에 들어가 보면 Line 에 초록색 네모박스 표시가 되어서 어떤 Line이 테스트 완료되었는지를 확인할 수 있다. Test Coverage의 한계점 Test Covera..