Unit Test 환경 설정하기 : JUnit 환경 설정 하고 테스트 해보기

2022. 12. 11. 14:20·Unit Testing
반응형

환경 설정하기

1. Intellij의 File - New 경로에서 Project... 을 누른다.

 

2. Gradle 탭으로 들어가 Java와 Kotlin/JVM에 체크 한 후 Next를 누른다

 

3. 원하는 저장소 이름을 쓴 후  Finish를 누른다.

 

4. 그러면 다음과 같은 화면을 확인할 수 있다.

 

5. build.gradle 파일의 dependencies 파일을 다음과 같이 수정한다.

*JUnit5도 나왔지만, 처음에는 JUnit4 를 사용한다. 이 글에서 다루는 모든 내용은 JUnit5에서도 사용할 수 있는 내용이다.

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.7.21'
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
    testImplementation 'junit:junit:4.13.2'
}

 

6. 여기까지 완료됐으면 오른쪽의 Gradle 탭을 누른 후 왼쪽의 Reload All Gradle Projects를 누른다.

 

자 환경 설정이 완료되었다. 테스트를 시작해보자.

 

 

테스트 시작하기

1. 간단한 테스트는 src/main/java/lecture1 경로에 MinuteValidator.kt 파일을 만드는 것으로 시작한다.

 

class MinuteValidator 는 시간에서 분이 제대로 들어왔는지를 테스트 하는 클래스로 miniute 값이 0에서 59사이에 있는지 테스트한다.

package lecture1

class MinuteValidator {
    fun isValid(minute: Int): Boolean {
        return (0..59).contains(minute)
    }
}

 

2. MinuteValidator에 마우스 오른쪽 클릭 - Show Context Actions를 클릭하면 Create test가 나온다. Creat test를 누른다.

 

3. 그러면 아래와 같이 Create test 다이얼로그가 나온다. Testing library를 JUnit4로 설정 후 OK를 누른다.


4. 그러면 src/test/java/lecture1 경로에 MinuteValidatorTest.kt 파일이 생성된다.

 

이제 이 class를 다음과 같이 채워넣자.

 

package lecture1

import org.junit.Assert.assertEquals
import org.junit.Test

internal class MinuteValidatorTest {
    @Test
    fun testMinuteValidator() {
        val minuteValidator = MinuteValidator()
        assertEquals(minuteValidator.isValid(30), true)
    }
}

 

코드를 설명하면 minuteValidator 객체를 만든 후 해당 minuteValidator이 30을 받았을 때, 30은 유효한 분 이므로 true를 반환하는지를 테스트 하는 것이다. assertEquals는 첫 파라미터와 둘째 파라미터가 같은지를 테스트한다.

 

 

5. 이후 internal class MinuteValidatorTest의 왼쪽에 있는 아래 버튼을 누르면

아래와 같이 메뉴들이 나오는데 여기서 Run 'MinuteValidatorTest'를 누른다.

 

그러면 다음과 같은 화면이 Intellij IDE 아래쪽에 나온다. Test passed: 1이 나온 것을 확인할 수 있다.

 

이 과정을 '테스트를 돌리고 모두 통과했다'고 말한다.

 

 

6. 그러면 코드를 다음과 같이 바꿔 본 후 다시 한 번 테스트를 돌려보자

internal class MinuteValidatorTest {
    @Test
    fun testMinuteValidator() {
        val minuteValidator = MinuteValidator()
        assertEquals(minuteValidator.isValid(30), false)
    }
}

 

그러면 30은 올바른 '분' 이라 true가 반환되는데 false임을 assert하고 있으므로 테스트 fail이 뜬다.

 

위 테스트를 올바로 작성하려면 30을 70으로 바꿔 유효하지 않은 '분'으로 설정해서 false가 return 되도록 만들어야 한다.

internal class MinuteValidatorTest {
    @Test
    fun testMinuteValidator() {
        val minuteValidator = MinuteValidator()
        assertEquals(minuteValidator.isValid(70), false)
    }
}

 

그러면 이제 pass가 다시 뜨는 것을 볼 수 있다.

 

 

정리

여기까지 Unit Test를 설정하고 기본적인 테스트를 작성하는 방법을 알아보았다. 다음 시간부터는 유닛 테스트를 어떻게 이름을 짓고, 어떻게 작성해야 하는지에 대해 알아볼 것이다. 

반응형

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

IntelliJ, Android Studio에서 Test Coverage 확인과 Test Coverage의 한계점  (0) 2022.12.15
IntelliJ, Android Studio에서 Test 결과를 시각적으로 확인하는 방법 : Gradle 사용  (0) 2022.12.14
Command Line에서 Test 실행하기 : Gradle Task 활용하기  (0) 2022.12.13
@Before Annotation 사용해 테스트 환경 설정하기  (0) 2022.12.12
Unit Testing 이란 무엇인가?  (0) 2022.12.10


'Unit Testing' 카테고리의 다른 글
  • IntelliJ, Android Studio에서 Test 결과를 시각적으로 확인하는 방법 : Gradle 사용
  • Command Line에서 Test 실행하기 : Gradle Task 활용하기
  • @Before Annotation 사용해 테스트 환경 설정하기
  • Unit Testing 이란 무엇인가?
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (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)
  • 블로그 메뉴

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

  • 공지사항

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

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
Unit Test 환경 설정하기 : JUnit 환경 설정 하고 테스트 해보기
상단으로

티스토리툴바