Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 깃허브
- O.S
- android study jam
- 더티비트
- git
- 마크다운
- Spring Boot
- Di
- Constraint Layout
- test
- Class.class
- Compose
- SOLID
- 다단계 큐
- 데드락
- markdown
- 리드미
- coroutine flow
- github
- kotlin
- Data Binding
- readme
- spring
- LiveData
- design pattern
- Android
- 운영체제
- JetPack
- OS
- JUnit
Archives
- Today
- Total
차지
[Test] Test code 작성 본문
Junit Test
- Android 에서 단위 테스트를 진행할 때에는 Junit 라이브러리를 사용합니다. 이 글은 Junit4 버전으로 작성했습니다.
- build.gradle에 코드를 추가하면 사용할 수 있습니다.
dependencies { ... testImplementation 'junit:junit:4.+' ... }
- 테스트할 객체나 함수에 커서를 올리고
cmd(ctrl) + shift + T
단축키를 사용하면
테스트 파일을 생성하거나, 이미 존재한다면 테스트 파일로 이동합니다. - @Test 어노테이션을 붙인 함수를 작성하면, 테스트를 진행할 수 있습니다.
Test Annotation
@Test
- 작성할 테스트 코드입니다. 함수 이름에는 여러가지 컨벤션이 있습니다.
- snake_case를 사용해서
Method_When_Result
와 같이 입력하기도 하고 (외에도 다양한 언더바 방식이 있습니다.) - CamelCase를 사용해서
MethodWhenResult
와 같이 입력하기도 합니다. - 백틱을 붙여서 `method when result`와 같이 띄어쓰기를 넣기도 하며
- 한글을 사용하기도 합니다.
함수 조건 결과
@Test
fun plus_clickButton_update() {
}
@Before, @After
- 테스트를 시작할 때, 테스트가 끝난 뒤에 처리할 내용을 담습니다.
- 메모리의 누수를 막기 위한 종료 코드를 @After 어노테이션을 붙인 함수에 작성하기도 합니다.
@RunWith()
- 테스트를 실행시키는 Runner를 지정합니다.
@SuiteClasses
- 테스트 스윗을 구성해 단위 테스트를 한꺼번에 수행할 수 있습니다.
@Rule
- 테스트를 보조해줍니다. 당장의 로직과 관련이 없는 다양한 조건을 설정할 수 있습니다.
- 비동기적인 코드를 테스트하는 문제를 어느정도 해소해줍니다.
코드 작성
- test 코드를 Given - When - Then 으로 대화하듯이 작성하면 보기에도 깔끔하고 작성하기도 쉽습니다.
- 변수를 선언하고, 상황이 주어지면, assert함수로 결과를 검증합니다.
- assert 함수에는 assertThat, assertEquals, assertNull 등 웬만한 상황은 다 검증할 수 있습니다.
@Test
fun plus_clickButton_updateResult() {
// Given two number
val one = 1
val two = 2
// When click button
val result = click()
// Then update
assertEquals(3, result)
}
Hamcrest & Truth
- 단언(Assertion)을 보기 쉽게 작성하기 위한 라이브러리입니다.
assertThat().isEqualTo()
와 같이 사용할 수 있습니다.
'Android > TDD' 카테고리의 다른 글
[Test] private 변수 테스트에서 사용하기 (0) | 2021.10.10 |
---|---|
[Test] LiveData test하기 (0) | 2021.09.22 |
[Test] Test Double & Mock (0) | 2021.09.21 |
[Test] TDD (0) | 2021.09.21 |