본문 바로가기

Language

[TestCode] @TransInstance 테스트 인스턴스 (JUnit5) - Junit은 테스트 메소드 마다 테스트 인스턴스를 새로 만든다. - 테스트 메소드를 독립적으로 실행하여 예상치 못한 부작용을 방지하기 위해서 @custom @DisplayName("테스트 인스턴스") void instance_ex() { System.out.println("value test1 = " + value++); System.out.println("instance test1 = " + this); } @custom @DisplayName("테스트 인스턴스2") void instance2_ex() { System.out.println("value test2 = " + value++); System.out.println("instance test1 = " + this); } - 실제로 위 코드를.. 더보기
[TestCode] @RepeatedTest, @ParameterizedTest 테스트 반복하기 (JUnit5) @RepeatedTest : 반복 횟수와 반복 테스트 이름을 설정할 수 있다. @RepeatedTest(10) // 10번의 테스트 반복 void repeatTest(RepetitionInfo repetitionInfo) { // 매개변수 통하여 현재 테스트 정보를 얻어옴 System.out.println("현재 " + repetitionInfo.getTotalRepetitions() + " 개의 테스트중 " + // 총 테스트 수 repetitionInfo.getCurrentRepetition() + " 번 실행중"); // 현재 진행중인 테스트 번호 } - 테스트 반복 횟수를 설정하고 매개변수를 통하여 테스트의 정보를 받아올 수 있다. - @RepeatedTest 어노테이션엔 2개의 매개변수를 넣어줄.. 더보기
[TestCode] @interface 커스텀 태그 (JUnit5) Junit5 애노테이션을 조합하여 커스텀 태그를 만들 수 있다. @Target(ElementType.METHOD) // 메서드에 사용이 가능하다. @Retention(RetentionPolicy.RUNTIME) // 애노테이션 정보를 런타임 까지 유지되도록 @Tag("local") // 태그가 local 환경이다. @Test public @interface custom { } - 커스텀태그를 위와 같이 생성하였다. - 위처럼 태그생성 후 테스트 코드 메서드에 이 애노테이션을 사용할 수 있다. @custom // @Test , Tag("local") 어노테이션 생략가능 @DisplayName("커스텀 태그") void custom_tag_ex() { Lunch lunch = new Lunch(); asse.. 더보기
[TestCode] @Tag 태깅과 필터링 (JUnit5) @Tag : 테스트 메소드에 여러 태그를 추가할 수 있다. @Test @DisplayName("태깅 그룹 local") @Tag("local") void tag_local_ex() { Lunch lunch = new Lunch(); assertTrue(lunch.getLunch("test").equals("Complete")); } @Test @DisplayName("태깅 그룹 dev") @Tag("dev") void tag_dev_ex() { Lunch lunch = new Lunch(); assertTrue(lunch.getLunch("test").equals("Complete")); } - 위처럼 코드 구성시 local, dev라는 2개의 태그로 나뉘게 된다. - 그대로 실행시에는 두 태그에 해당하.. 더보기
[TestCode] assume 조건에 따라 테스트 실행 (JUnit5) assumeTrue : 조건 - 조건을 정해주고 해당조건에 적합한지 체크한다. @Test @DisplayName("조건에 맞춰 실행") void assume_ex() { Lunch lunch = new Lunch(); String test_env = "LOCAL"; assumeTrue("LOCAL".equals(test_env)); assertTrue(lunch.getLunch("test").equals("Complete"), () -> "실패시 메시지"); } - 현재 테스트 하는 환경을 예로 들어 LOCAL환경인지 개발환경인지 실서버 환경인지 여부를 체크하여 다음에 실행될 테스트 코드를 실행할지 여부를 정할 수 있다. 만일 위 코드에서 LOCAL 환경이 아니라면 다음 테스트는 실행되지 않을것이다. -.. 더보기
[TestCode] assertion 기대값, 참 거짓 확인 (JUnit5) aseertEquals : 실제 값이 기대한 값과 같은지 확인 - 특정 기능을 실행했을경우 반환되는 값이 기대하는 값과 일치하는지 확인할 수 있는 메서드 이다. @Test @DisplayName("점심추천 만들기") void create_lunch() { Lunch lunch = new Lunch(); assertNotNull(lunch); // lunch 가 null이 아닌지 체크 assertEquals("Complete", lunch.getLunch(), "점심 만들기 성공시 Complete 여야한다."); // getLunch라는 메서드 실행시 Complete 가 반환되는지 체크 } - 위와같이 활용할 수 있으며, aseertEquals 사용시에 기대값, 실행함수 두 매개변수 위치가 서로 바뀌어도 .. 더보기
[TestCode] @DisplayName 테스트 이름표시법 (JUnit5) 기본표기 : 실행되는 메서드의 명칭이 출력됨 @MockMvcTest public class HomeControllerTest { @Autowired private MockMvc mockMvc; @Test public void home_view() throws Exception{ mockMvc.perform(get("/")) .andDo(print()) .andExpect(status().isOk()) .andExpect(view().name("index.html")); } } - 보통 위처럼 메서드는 가독성을 위해서 언더스코어 규칙에 따라 주로 작성한다 @DisplayNameGeneration : 언더스코어를 공백으로 치환시켜 출력시켜줌 @MockMvcTest @DisplayNameGeneration(D.. 더보기
[Java] JPA ( Java Persistence API ) 1. JPA란? 2. ORM이란? 3. JPA의 장점 4. JPA의 단점 5. 주요 기능 및 사용예제 JPA ( Java Persistence API ) Java에서 제공하는 API, 관계형 데이터베이스 모델과 객체 모델간의 패러다임 불일치를 해결해주는 ORM 기술에 대한 표준 명세 Java 에서 JPA에게 명령하면 JPA가 JDBC API를 사용하여 SQL을 만들어서 DB로 보내주는것이다. 스프링에서 제공하는 것이 아니다. JAVA에서 제공하는것이다. 라이브러리가 아닌 인터페이스이다. 영속성이란? 더보기 영속성(Persistence) : 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 ORM ( Object-relational mapping ) 객체와 관계형 데이터베이스의 데이터를 .. 더보기