1. 수동 테스트 vs 자동 테스트
수동 테스트의 장점
- 최종 사용자와 완전히 똑같은 동작을 확인할 수 있음.
- 사용성, 쾌적함 등 정성적인 부분의 면에서 평가가 가능.
자동 테스트의 장점
- 반복실행 가능
- 테스트 실행 상황을 시각화
- 클래스와 메서드등 확인하기 어려운 단위동작을 확인
2. 프레임 웍
1) 단위 테스트
- JUnit
- Mockito ( 목 라이프러리 )
2) UI 테스트
- Espresso
* 단위테스트를 공부할 수 있는 링크
https://www.javatpoint.com/junit-tutorial
3. 목 객체
- 단위테스트는 IO처리 등과 같은 외부의 영향을 받지 않게 테스트를 해야하는데 테스트를 위해서
실제로는 IO처리 등을 하지않고 원하는 값을 반환처리하거나 실행하는 것( 위장 )이 필요하다.
- 이런 위장을 간편하게 구현 할 때 사용하는 것이 "목 객체"
목의 여러 가지 기능 들.
- 객체의 반환값 고정
- 메서트 호출 여부 검증
- 객체의 일부 메서드 교체
- 의존성 주입
- 등등.
* Mockito를 이용하면 가독성이 높고, 간결한 테스트 코드를 작성 할 수 있습니다.
JUnit 기초
JUnit의 assert 메소드들
- assertEquals(A, B) : 객체 A와 B가 같은 값을 가지는지 확인한다.
- assertEquals(A, B, C) : 객체 A와 B가 같은 값을 가지는지 확인한다. C는 오차범위.
- assertArrayEquals(A, B) : 배열 A와 B가 일치하는지 확인한다.
- assertSame(A, B) : 객체 A와 B가 같은 객체인지 확인한다.
- assertTrue(A) : 조건 A가 참인지 확인한다.
- assertNull(A) : 객체A가 Null인지 확인한다.
- assertNotNull(A) 객체 A가 Null이 아닌지 확인한다.
assertThat()도 있지만, AssertJ의 사용법이 더 쉬운 것 같아 나중에 AssertJ 공부할 때 더 자세히 알아보고 같이 정리해야겠다.
JUnit의 어노테이션
- @Test
: 메소드 위에 해당 어노테이션을 선언해, 테스트 대상 메소드임을 지정할 수 있다. - @Test(timeout=밀리초)
: 테스트 메소드 수행 시간을 제한할 수 있다.
테스트메소드가 리턴값을 반환하는 데에 걸리는 시간이 지정된 밀리초를 넘긴다면 해당 테스트는 실패로 판별한다. - @Test(expected=예외)
: 해당 테스트 메소드 예외 발생 여부에 따라 성공/실패를 판별할 수 있다.
expected=에 지정된 예외가 발생해야 테스트가 성공한 것으로 판별한다. - @Ignore
: 해당 어노테이션이 선언된 테스트 메소드를 실행하지 않도록 지정한다. - @BeforeEach == (구)@Before
: 모든 @Test메소드가 실행되기 전에 실행되는 메소드를 지정하는 어노테이션이다.- 각 테스트 시작 전에 각각 호출된다.
- @Test메서드에서 공통으로 사용되는 코드를 @Before메서드에 선언해 사용하면 좋다.
- 테스트마다 공통으로 쓰이면서, 테스트 전에 리셋되어야 할 항목이 들어간다
- @AfterEach == (구)@After
: 모든 @Test메소드의 실행이 끝난 뒤에 실행되는 메소드를 지정하는 어노테이션이다.- 각 테스트가 끝나고 각각 호출된다.
- @BeforeAll == (구)@BeforeClass
: 해당 테스트 클래스가 실행될 때 딱 한 번만 수행되는 테스트 메소드를 지정하는 어노테이션이다. - @AfterAll == (구)@AfterClass
: 해당 테스트 클래스가 실행이 끝난 뒤에 딱 한 번만 수행되는 테스트 메소드를 지정하는 어노테이션이다.- 테스트클래스의 모든 테스트가 완료된 뒤 한 번 호출된다.
*스프라우트 메서트 - 새로추가하는 부분을 완전히 별개의 조작으로 다루는 메서드
*랩 메서드 - 처리를 감싸고있는 메서드
https://developer.android.com/codelabs/advanced-android-kotlin-training-testing-basics#0
'Android 공부 > 단위테스트 관련' 카테고리의 다른 글
AndroidX 테스트용 ViewModel, Live Data 테스트 (0) | 2022.05.10 |
---|---|
단위테스트? : ( Mock ) 02 , 테스트 적용과정. (0) | 2022.05.09 |
Mockito : 기능 들? (0) | 2022.05.09 |
Mocking 및 Unit test 작성 01 (0) | 2022.05.09 |
Mockito 설치 (0) | 2022.05.09 |