최범균님의 "테스트 주도 개발 시작하기" 도서를 읽으며 TDD 입문을 해 봅니다.
그런데 테스트 요건에 의해 테스트 코드부터 작성하면서 개발하는 방식이 익숙해지려면 많은 시간이 걸릴것 같아요.(참고) JUnit User Guide
환경
- 2021년 5월
- M1 맥미니
- IntelliJ 2021.1
- Spring Initializr 데모 프로젝트 생성
- Gradle Project / Java 11 / Spring Boot 2.5.0 / Dependencies : Spring Web, Spring Boot DevTools
- JUnit5 (junit-jupiter 5.7.2 의존)
package com.example.demo;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
class JunitSampleTest {
/** 테스트 실행 전 실행, static 메서드 */
@BeforeAll
static void tBeforeAll() {
System.out.println("@BeforeAll Method");
}
/** 테스트 실행 후 실행, static 메서드 */
@AfterAll
static void tAfterAll() {
System.out.println("@AfterAll Method");
}
/** Test 어노테이션이 선언된 메서드 실행 전 매번 실행 */
@BeforeEach
void setUp() {
System.out.println("@BeforeEach Method");
}
/** Test 어노테이션이 선언덴 메서드 실행 후 매번 실행 */
@AfterEach
void tearDown() {
System.out.println("@AfterEach Method");
}
@DisplayName("일반 테스트1")
@Test
void t_테스트1() {
System.out.println("테스트1");
assertEquals(1, 2);
}
@DisplayName("일반 테스트2")
@Test
void t_테스트2() {
System.out.println("테스트2");
assertEquals("a", "a");
}
@Disabled
@DisplayName("무시된 테스트")
@Test
void t_무시당한_테스트() {
System.out.println("@Disabled 어노테이션으로 무시된 테스트");
}
}
./gradlew test
또는 ./gradlew build
빌드시에도 실행됨gradle build -x test
IntelliJ 테스트 결과
실행 결과 콘솔
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test FAILED
@BeforeAll Method
@BeforeEach Method
테스트1
@AfterEach Method
expected: <1> but was: <2>
Expected :1
Actual :2
<Click to see difference>
org.opentest4j.AssertionFailedError: expected: <1> but was: <2>
at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
...(생략:trace)
@BeforeEach Method
테스트2
@AfterEach Method
@AfterAll Method
JunitSampleTest > 일반 테스트1 FAILED
org.opentest4j.AssertionFailedError at JunitSampleTest.java:37
3 tests completed, 1 failed, 1 skipped
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///Users/.../IdeaProjects/demo-springbootweb/build/reports/tests/test/index.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 756ms
4 actionable tasks: 2 executed, 2 up-to-date