[JUnit] Unit Testing을 깔끔하게 작성하는 방법 : 테스트 이름 작성 방법, 코드 순서 작성 방법

2022. 12. 27. 22:01·Unit Testing
반응형

Unit Testing 깔끔하게 작성하기

Unit Testing을 깔끔하게 작성하기 위해서는 Unit Test의 이름, 테스트 내부의 작성 순서가 중요하다.

 

이름 작성 방법

가독성을 좋게 만들려면 [메서드명][결과][환경 설명] 순서로 작성한다.

 

예를 들어 LoginRepository에서 Login이 Success했을 때, LoginUseCase의 login이 Success 해야 한다면 [login][Success][WhenLoginRepositoryLoginSuccess]와 같이 같이 테스트 이름이 작성될 수 있다. 

@Test
fun loginSuccessWhenLoginRepositoryLoginSuccess() {
    val repositorySuccessResult = LoginRepositoryResult.Success("test_token")
    Mockito.`when`(loginRepository.login(userName = "success", password = "success"))
        .thenReturn(repositorySuccessResult)

    val result = loginUseCase.logIn(userName = "success", password = "success")

    Assert.assertEquals(LoginUseCaseResult.Success("test_token"), result)
}

 

예를 들어 LoginRepository에서 Login이 IllegalStateException을 생성했을 때, LoginUseCase의 login에서 애러가 발생 해야 한다면 [login][ThrowError][WhenLoginRepositoryLoginThrowError]와 같이 같이 테스트 이름이 작성될 수 있다. 

@Test
fun loginThrowErrorWhenLoginRepositoryLoginThrowError() {
    Mockito.`when`(loginRepository.login("error", "error"))
        .doThrow(IllegalStateException())

    Assert.assertThrows(IllegalStateException::class.java) { loginUseCase.logIn("error", "error") };
}

 

테스트 내부 작성 순서

환경 설정, 실행, 확인 순서로 작성한다. 이 순서가 가장 이해하기 편했다. 만약 중간에 환경 설정이 한 번 더 들어가야 한다고 생각되면 코드를 나누는 것이 좋다.

@Test
fun loginSuccessWhenLoginRepositoryLoginSuccess() {
    // 환경 설정
    val repositorySuccessResult = LoginRepositoryResult.Success("test_token")
    Mockito.`when`(loginRepository.login(userName = "success", password = "success"))
        .thenReturn(repositorySuccessResult)

    // 실행
    val result = loginUseCase.logIn(userName = "success", password = "success")

    // 확인
    Assert.assertEquals(LoginUseCaseResult.Success("test_token"), result)
}

 

가끔 실행과 확인이 겹쳐야 하는 경우도 있다.

@Test
fun loginThrowErrorWhenLoginRepositoryLoginThrowError() {
    // 환경설정
    Mockito.`when`(loginRepository.login("error", "error"))
        .doThrow(IllegalStateException())

    // 실행 + 확인
    Assert.assertThrows(IllegalStateException::class.java) { loginUseCase.logIn("error", "error") };
}

 

 

이 방법이 가장 좋은 방법일까?

여기서의 이름 작성 방법과 코드 순서 작성 방법은 하나의 좋은 방법일 뿐이다. 더 나은 방법이 있을 수 있다.

 

실무에서 가장 중요한 것은 팀의 컨벤션이다. 팀의 코드 컨벤션을 설정하고 그에 맞추어 작성해야 가독성이 좋아진다.  항상 명심하자. 코드에서는 일관성이 가독성에 중요하기 때문에 코드 컨벤션을 잘 만들고 계속해서 개선해나가는 것이 중요하다. 만약 팀에 좋은 컨벤션이 없다면 위의 방법을 제안해도 괜찮고 다른 팀원들과 의견이 모아지면 사용하도록 하자.

반응형

'Unit Testing' 카테고리의 다른 글

[Unit Testing] 어떤 클래스에 테스트가 필요할까? data class 도 테스트가 필요한가?  (0) 2022.12.28
[Unit Testing] Android의 정적 메서드를 사용하거나 Android 전용 클래스를 사용하면 테스트에 실패하는 이유 알아보기  (0) 2022.12.26
[Unit Testing] Android Context 객체를 사용하는 클래스 테스트하기  (0) 2022.12.25
코드 작성 시 정적 변수와 정적 메서드 사용을 지양해야 하는 이유 알아보기  (0) 2022.12.24
MockitoJUnitRunner 사용해 Mockito 코드 깔끔하게 만들기 : @Mock  (0) 2022.12.23


'Unit Testing' 카테고리의 다른 글
  • [Unit Testing] 어떤 클래스에 테스트가 필요할까? data class 도 테스트가 필요한가?
  • [Unit Testing] Android의 정적 메서드를 사용하거나 Android 전용 클래스를 사용하면 테스트에 실패하는 이유 알아보기
  • [Unit Testing] Android Context 객체를 사용하는 클래스 테스트하기
  • 코드 작성 시 정적 변수와 정적 메서드 사용을 지양해야 하는 이유 알아보기
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 안드로이드를 위한 Coroutines (2)
      • Unit Testing (19)
      • GitHub Actions (0)
      • 공식 문서 번역 (35)
        • Coroutines 공식 문서 (35)
      • 알고리즘 (7)
        • Kotlin 자료구조 (0)
        • 알고리즘 (7)
        • Kotlin으로 구현하는 자료구조 (0)
      • 코딩 테스트 (0)
      • Deep Learning (0)
      • Machine Learning Math (17)
        • Linear Algebra (17)
      • ML (0)
      • Docker (15)
      • Kubernetes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 코틀린 코루틴의 정석 책 출간 소식
  • 인기 글

  • 태그

    pytorch
    코루틴 채널
    numpy
    Machine Learning
    Coroutines Context
    컨테이너
    unit testing
    coroutine
    코루틴 Flow
    Coroutines
    TensorFlow
    unit test
    Kotlin
    Coroutines Flow
    junit
    mockito
    Coroutines Channel
    코루틴
    Docker
    도커
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
[JUnit] Unit Testing을 깔끔하게 작성하는 방법 : 테스트 이름 작성 방법, 코드 순서 작성 방법
상단으로

티스토리툴바