일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Cocoapods #PrivateRepo #SpecRepo
- 지팍스페인
- xcode
- 세비야
- 스플리트
- swiftUI
- 라이브러리
- 대한항공
- 크로아티아
- 강릉
- 연금저축펀드
- 시밀란
- SwiftUI #Skeleton #데이터갱신
- Gradle
- 도심공항
- 스페인광장
- 리브어보드
- 공기먹는다이버스
- 러브자그레브
- cocoapod
- 러브스플리트
- Concurrency #Swift #Combine
- 스페인여행
- Swift #Concurrency #쓰레드
- 푸켓여행
- 괌 자유여행
- 아시아나
- Device 등록
- 스쿠버다이빙
- 그라나다
- Today
- Total
JEP's Diary
Android Unit Tests(단위 테스트) - Local Unit Tests 본문
Android Unit Tests(단위 테스트) - Local Unit Tests
Android에서 동작하는 앱을 위한 Unit Testing에는 두 가지 종류가 있다.
Local Unit Tests : Android 프레임워크와는 별개로 동작하는 것들을 테스트. 이 테스트는 시험시간을 최소화하기 위해 JVM에서 로컬로 실행하도록 컴파일된다.
Instrumented Unit Tests : Android 프레임워크과 연관되어 동작하는 것들을 테스트. 이 테스트는 안드로이드 디바이스 또는 에뮬레이터에서 동작한다.
(Android Studio 1.5.1)
1. 테스트 과정
1.1 테스트 환경 설정
build.gradle 파일을 열어 3가지 라이브러리를 추가합니다.
1 2 3 4 5 6 7 | dependencies { testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' testCompile 'org.hamcrest:hamcrest-library:1.3' compile 'com.android.support:appcompat-v7:23.1.1' } | cs |
JUnit : Unit Testing Framework (필수)
Mockito : Mock Object 구현을 도와주는 라이브러리
Hamcrest : Test Class 에서 사용하는 assert()와 같은 Matcher를 확장한 Library
1.2 Test Code 디렉토리 확인
Local Unit Test의 디렉토리는 src/test/java 이다.
해당 패키지가 없다면 New > Directory를 통해 새로 생성해준다.
1.3 Test Artifact 설정
AndroidStudio에서 Unit Testing를 진행할 Test의 유형을 Test Artifact라고 부른다. 어떤 유형의 Unit Test를 실행 할 것인지 설정한다.
좌측 하단의 Build Variants를 클릭한다.
그리고 Test Artifact에서 Unit Tests를 선택한다.
1.4 Test Class 생성 및 Test 실행
Test를 실행할 간단한 소스 코드를 작성한다.
New > Java Class > Calculator.java 생성
1 2 3 4 5 6 7 8 9 | public class Calculator { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } } | cs |
해당 소스코드에서 마우스 우측 버튼 > Go to > Test를 클릭하면 Test Code 파일이 자동으로 생성된다.
Create New Test 선택
JUnit4 선택하여 테스팅 할것이므로 JUnit4 선택.
setUp, teatDown 함수는 각각 테스트 하기 전 후에 호출 되는 함수 이므로 체크.
테스트할 메서드 add, sub 체크.
이렇게 하면 Test Code 파일이 자동으로 생성된다.
생성된 파일에 테스트 코드를 입력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class CalculatorTest { private Calculator calculator; @Before public void setUp() throws Exception { calculator = new Calculator(); } @After public void tearDown() throws Exception { } @Test public void testAdd() throws Exception { assertEquals(3, calculator.add(1, 2)); } @Test public void testSub() throws Exception { assertEquals(-1, calculator.sub(1,2)); } } | cs |
assertEquals(기대되는 값, 실제 값)
마우스 우클릭 > Run 'Calculate Test'를 클릭하여 테스트를 실행한다.
테스트가 통과 되었는지 실패되었는지 결과를 확인한다.
2. 코드 커버리지 (JaCoCo)
코드 커버리지는 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표 중 하나다. 말 그대로 코드가 얼마나 커버되었는가이다.
소프트웨어 테스트를 진행 했을 때 코드 자체가 얼마나 실행되었느냐 이다.
AndroidStuio 1.5.1 에서는 코드 커버리지 JaCoCo를 사용할 수 있다.
2.1 JaCoCo 설정 및 실행
Run > Edit Configuration > Code Coverage 탭을 선택한다.
Code Coverage 탭에서 JaCoCo를 선택한다.
코드 커버리지를 실행한다.
마우스 우클릭 > Run 'CalculatorTest' With Coverage 선택.
커버리지에 대한 결과이다.
테스트할 add, sub메서드를 모두 테스트했으므로 100%의 결과가 나온다.
add, sub 메서드 중 하나만 테스트 하면 이 수치가 달라진다.
testSub() 안에 있는 sub 메서드에 대한 테스트를 주석 처리 후 다시 코드 커버리지를 실행하면,
아래와 같이 Calculator 부분의 Method 퍼센테이지에 50%라고 출력되는 결과를 볼 수 있다.
또한 Calculator.java 파일을 보면 테스트 한 메서드는 초록색, 테스트를 하지 않은 메서드는 빨간색으로 표시된다.
'Development > Android' 카테고리의 다른 글
ViewPager2 (0) | 2021.01.06 |
---|---|
Android ViewModel (0) | 2018.08.08 |
Android 6.0 마시멜로 대응(런타임 권한 모델) (0) | 2016.03.14 |
Realm 모바일 데이터 베이스(Android) (0) | 2016.03.13 |
안드로이드 샘플 불러오기 (0) | 2015.11.25 |