환경 설정하기
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 |