이번 글에서는 JUnit에서 제공하는 Tagging과 Filtering 기능에 대해 알아보려고 한다. 자바 어플리케이션은 빌드 시 기본적으로 모든 테스트가 수행되는데 이때 태깅 기능을 통해 빌드하는 특정 환경 별로 각기 다른 테스트가 수행되도록 설정할 수 있다. JUnit에서는 테스트 클래스와 테스트 메소드를 태깅하기 위해 @Tag 어노테이션을 제공하며 이를 기반으로 실행할 테스트들을 필터링한다. Tag 문법 규칙 다음과 같이 @Tag의 value 속성으로 태그 이름을 지정하는데, 특정한 규칙을 만족하는 문자열만을 태그 이름으로 사용할 수 있다. class UnitTest { @Tag("fast") @Test void fast() { System.out.println("fast 테스트 실행"); } @T..
JUnit이란 테스트 주도 개발(TDD)에서 단위 테스트를 하기 위한 자바의 테스팅 프레임워크로, 가장 최근 버전은 JUnit5이다. JUnit5는 이전 버전과는 달리 3개의 모듈로 구성되는데 각 모듈의 간단한 기능은 다음과 같다. JUnit Platform JVM에서 테스팅 프레임워크를 실행하는 기반 플랫폼 JUnit Jupiter JUnit5에서의 테스트 작성을 위한 TestEngine으로, JUnit Vintage 엔진에서는 불가능한 parameterized, nested, dynamic tests 등이 가능함 JUnit Vintage JUnit4 또는 이전 버전과의 호환성을 위한 TestEngine JUnit은 테스트 구성을 위해 여러 어노테이션을 제공한다. 다음은 가장 많이 사용되는 기본 어노테..
저번 글에 이어서 Effective Java 스타일의 Builder 패턴과 @Builder 어노테이션에 대해 알아보자. 먼저 이번 글에서 계속해서 사용할 예제 클래스는 다음과 같다. @AllArgsConstructor(access = AccessLevel.PROTECTED) public class Home { private String basement; private String structure; //required private int door; //required private int window; //required private String roof; //required private String interior; } Effective Java의 Builder Pattern 앞의 글과는 다르게 ..
그동안 스프링으로 개발을 하면서 아무 생각없이 @Builder 어노테이션을 사용하여 객체를 생성해왔다. 그러던 어느날 필드가 7개나 되는 객체를 builder() 메소드를 호출하여 생성하던 중 이거 잘못하다 필드 하나 빠뜨리겠는데? 라는 생각이 들었다. 또한 어떤 필드에 대한 메소드를 호출해야 하는지 기억이 나지 않아 해당 클래스 파일을 왔다갔다하며 객체를 생성할 수 밖에 없었다. 물론 builder() 메소드 호출을 통한 객체 생성 시에도 IDE의 도움을 받을 순 있지만 필드의 갯수가 매우 많은 경우에는 헷갈릴 가능성이 많다. 무엇보다 만약 필수적인 필드를 빠뜨렸을 때 일반 생성자의 경우에는 컴파일 오류가 발생하여 이를 금방 알아차릴 수 있다. 그러나 @Builder의 경우에는 실행 오류만이 발생한다...
- Total
- Today
- Yesterday
- Git
- spring boot
- Spring Security
- SSE
- spring aop
- Assertions
- 전략 패턴
- 템플릿 콜백 패턴
- Front Controller
- junit5
- C++
- 모두의 리눅스
- github
- ParameterizedTest
- Transaction
- 서블릿 컨테이너
- servlet filter
- rest api
- QueryDSL
- 디자인 패턴
- mockito
- facade 패턴
- vscode
- Linux
- JPA
- Gitflow
- 단위 테스트
- FrontController
- spring
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |