SlideShare a Scribd company logo
안드로이드 TDD 정착기
(Robolectric 과 Jacoco)
토스랩 Steve 승욱 Jung
(Robolectric Contributor)
Android Test 시작하기
Android Instrument 사용
2012년 4월쯤
Android Instrument 사용
- 목표 커버리지 : 80%
- 실제 커버리지 : 60%
UI 테스트를 제외하면 사실상 80%...
에뮬레이터를 통한 자동화 테스트
장점
지나치게 복잡한 테스트 준비 단계
단점1
1. 테스트 대상 APK 빌드
2. 에뮬레이터에 설치
3. 테스트 프로젝트 빌드
4. 테스트 코드 설치
5. 테스트 시작
시간이 돈인데...
단점2
테스트 프로젝트의 완전한 분리
1. 테스트 프로젝트 단독 실행 불가
(의존성 연결 필요)
2. 자동화의 큰 걸림돌
단점3
에뮬레이터의 한계
1. 테스트 환경 구성의 어려움
2. 리눅스 콘솔에서의 테스트
JVM 에서 테스트하기
해결방법
GDG 세미나
카카오에서 사례 공유
직접 Android SDK 와 테스트 프
로젝트 의존성 연결
꽤 복잡한 설정에 무슨 말인지 하나도 기억이...
Vingle 개발자 Party에서 사례 공유
Robolectric 사용
Robolectric 첫 대면
2013년 제대로 편한 TDD
Web Spring 환경
Spring 프레임워크의 최대 장점
쉬운 테스트 환경 구성
테스트에 대한 높은 접근성
정착된 TDD 문화
Android 에서의 TDD 다시 고민
Test 를 위한 코드가 아닌 TDD
짧고 간결해야 한다.
짧고 간결해야 한다.
쉽게 적용할 수 있어야 한다.
짧고 간결해야 한다.
쉽게 적용할 수 있어야 한다.
실제와 가까워야 한다.
JUnit4 를 사용 여부
최소한의 환경 설정으로 적용 여부
UI 테스트 여부
그래서 Robolectric 도입 시도
너로 정했어!
JUnit4 사용 가능
Runner 설정
Shadow(Mock) 지원
Roboletric 시작하기
환경 구성
1. Build Script 추가
2. Plug-in 추가
3. Dependency 추가
4. Configration 추가
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. Build Script 추가
2. Plug-in 추가
3. Dependency 추가
4. Configration 추가
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. Build Script 추가
2. Plug-in 추가
3. Dependency 추가
4. Configration 추가
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. Build Script 추가
2. Plug-in 추가
3. Dependency 추가
4. Configure 추가
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
/proxy/https://github.
com/robolectric/robolectric-
gradle-plugin
1. 테스트 코드 작성
2. 테스트 동작 설정
3. 테스트 코드 실행
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. 테스트 코드 작성
2. 테스트 동작 설정
3. 테스트 코드 실행
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. 테스트 코드 작성
2. 테스트 동작 설정
3. 테스트 코드 실행
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
그래서 준비한 라이브 코딩
실제 Http 테스트를 하려면?
- HttpLayer 설정하기
멀티 쓰레드 테스트를 하려면?
- Awaitility 사용하기
초기 설정을 세밀화 하고 싶으면?
- 커스텀 Runner 이용하기
테스트 Tip
Jacoco 설정하기
매우 복잡하니 가급적 샘플 코드를 따라하시
길..
1. Plug-in 설정
2. Task 설정
3. TestRunner 설정
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
1. Plug-in 설정
2. Task 설정
3. TestRunner 설정
Flavor 처리 주의!!
Flavor 처리 주의!!
1. Plug-in 설정
2. Task 설정
3. TestRunner 설정
Flavor 처리 주의!!
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
어려운 듯 아닌 듯 해서
라이브 코딩
Flavor 설정시 경로 및 Task 이름 주의
Tip
테스트는 오류의 부재가 아닌 존
재를 보기 위함이다.
Testing shows the presence, not the absense of bug.
- Edsger W. Dijikstra
마지막 말
QnA
개발자 블로그 : http://tosslab.github.io
감사합니다.

More Related Content

GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지