본문 바로가기

Android/TDD

(8)
[Mockito] Spy Object를 사용하여 Unit Test를 해보자. 2022.02.24 - [Android/TDD] - [Mockito] Mockito를 사용하여 Unit Test 를 해보자 (feat. Truth + Junit4) 2022.02.25 - [Android/TDD] - [Mockito] Mockito를 사용해 Instrumented Unit Test를 해보자 필자가 이전에 Mockito를 사용하여 Test 작업을 했던 것들에 대한 글이 몇 개 존재한다. 해당 게시글에서는 아주 간단한 Sample Object를 사용하여, 아주 간단한 Test만 진행했었기 때문에 쉬운 난이도로 테스트를 진행해 볼 수 있었다. 하지만, 필자가 실제로 프로젝트에 Unit Test를 적용해보려고 하니 생각보다 정상적으로 되는 것이 많이 없었다. Sample과 다르게 상속 받는 것들..
[Espresso] Multi-Module 구조에서 Espresso를 사용하여 Unit Test를 해보자 전에 간단한 샘플 코드를 만들어서 Espresso를 통해 Unit Test를 해보았는데, 이번에는 Multi-Module 구조의 샘플 코드에서 Unit Test 를 해보았다. 역시 테스트하는 환경이 조금(?) 변경됐다고 빌드가 정상적으로 되지 않았다. 기본 사용법은 이전 게시글에서 작성했으니, 이번에는 발생한 문제와 해결 방법에 대하여 작성해볼 생각이다. 사용 방법은 다음 게시글에서 확인하면 될 것이다. https://heegs.tistory.com/71 [Espresso] Espresso를 사용하여 UI Test 를 해보자 (feat. Junit4) 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) Unit Test 에 대..
[TDD] TDD 란 ? 최근 Unit Test 관련하여 스터디를 진행하고 있는데, TDD 에 대해서 명확하게 개념을 정리하지 않은 것 같아 한번 간단히 정리해 보려고 한다. 우선, TDD 란 무엇인가 ? Test Driven Development. 테스트 주도 개발의 약자로, 테스트를 통해 개발을 이끌어 나가는 소프트웨어 개발 방법론. 소프트웨어를 개발할 때, 작은 단위의 테스트 케이스를 만들어 반복적으로 테스트를 진행하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는 방식이다. 개념부터 필자가 잘못 생각하고 있던 것이 있다. TDD 를 기반으로 구현을 할 때, 테스를 기반으로 소프트웨어를 구현해야 한다는 것이다. 보통, 앱을 개발할 때, 테스트는 기능 구현이 끝나거나 일정한 부분의 개발을 완료 한 후 테스트를 통해 ..
[Mockito] Mockito를 사용해 Instrumented Unit Test를 해보자 Mockito를 사용하여 로컬 Unit Test는 수행해 보았지만, 계측 Unit Test는 해보지 않아서 한번 적용해 보았다. 계측 테스트를 진행하면서 로컬 테스트에서는 발생하지 않았던 이슈들이 발생하였고, 그것을 해결하기 위해서 찾아보고 적용해본 결과를 작성하고자 한다. 아직 스터디 중이기 때문에, 다른 방법으로 사용이 가능하다면 추가적으로 글을 작성할 예정이다. 우선, 계측 테스트를 위해 Gradle 에 라이브러리를 추가해주자. Truth 도 함께 사용하기 위하여 같이 추가해 주었다. 이전에 gradle 에 추가한 것과 동일하지만, testImplementation > androidTestImplementation 계측 테스트는 androidTest 에서 사용되기 때문에 해당 부분에도 적용이 가능하..
[Mockito] Mockito를 사용하여 Unit Test 를 해보자 (feat. Truth + Junit4) Truth에 이어서 Mockito를 사용한 Unit Test를 해보았다. Mockito를 사용하여 Unit test를 하기 위해서는, Mockito 만 사용해도 괜찮지만 이전에 사용했던 Truth와 Junit4를 같이 사용하여 진행할 경우 더욱 폭넓은 unit test를 진행할 수 있는 것으로 보인다. 지난번에 작성해 두었던 Unit Test 예제 프로젝트를 사용하여 추가적으로 스터디를 진행해 보았다. 우선, Mockito 가 무엇인가 알아보자. Unit Test 를 도와주는 Mocking Framework 아주 간단하다. 유닛테스트를 원활하게 사용하기 위해 가짜 객체(Mock 객체)를 지원해주는 프레임워크가 Mockito이다. Mock 객체에 대한 것은 필자가 예전에 간단하게 정리해 둔 글이 있으니 참..
[Truth] Truth를 사용하여 Unit Test 를 해보자 (feat. Junit4) 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 지난번 Espresso 를 사용한 UI 테스트에 이어서 Truth 를 사용한 Unit 테스트에 대한 스터디를 진행하였다. Unit 테스트를 진행함에 있어서 Junit4 만 사용해도 되지만 공식 developer 문서에도 사용하는 것이 좋다는 언급이 되어있기도하여 Truth 를 사용해보자 생각하였다. Espresso 를 사용해보면서 테스트 환경을 어느정도 만들어 두지 않았나 싶어서 바로 Truth 를 사용해보도록 하였다. 우선, Truth 가 무엇인가 ? Guava 팀에서 제공하는 유창한 어설션 라이브러리 라고 안드로이드 developer 문서에서 언급되어있다. Unit 테스트..
[Espresso] Espresso를 사용하여 UI Test 를 해보자 (feat. Junit4) 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) Unit Test 에 대한 스터디를 진행하다, Espresso 를 사용하여 UI 테스트를 진행할 수 있다는 공식 문서를 확인할 수 있었다. 기존에 test 를 생각하고있지 않더라도 프로젝트를 생성하게 되면 gradle 에 junit 과 더불어 espresso 에 대한 implement 가 추가되어 있었는데, 이것이 테스트를 위한 것이라는 것을 이번에 처음 알게 되었다. Espresso 사용법과 함께, 필자가 Espresso 를 적용하면서 잘 되지 않았던 부분을 해결한 방법에 대해서 포스팅하고자 한다. 우선, Espresso 가 무엇인가? 간결하고, 신뢰할 수 있는 Androi..
[Mockito] Mock 객체 란? Mock 이란? 실제 객체를 다양한 조건으로 인해 제대로 구현하기 어려울 경우 가짜 객체를 만들어 사용하는데, 이를 Mock 객체라 한다. Mock 객체가 필요한 경우. 테스트 작성을 위한 환경 구축이 어려운 경우. 테스트가 특정 경우나 순간에 의존적인 경우. 시간이 걸리는 경우 Mock에 대한 기본적인 분류 개념. 1. 테스트 더블 테스트를 진행하기 어려운 경우 대신해 테스트를 진행할 수 있도록 만들어주는 객체. Mock객체와 유사한 의미, 테스트 더블이 좀더 상위 의미로 사용. 2. 더미 객체(Dummy Object) 단순히 인스턴스화될 수 있는 수준으로만 객체를 구현. 객체가 필요할 뿐 객체의 기능까지는 필요하지 않은 경우에 사용. 3. 테스트 스텁(Test Stub) 더미 객체가 실제로 동작하는 ..