본문 바로가기
TIL WIL

20220621 TIL

by Youngin 2022. 6. 21.

application.property

application.property가 좀더 사용이 까다로움, 결국 지양해야 될 것.

application.yml으로 사용하면 좀 더 편하게 많은 설정을 할 수 있음

 

 

유레카

Eureka(유레카) 로드 밸런싱 Middle-tier server(Client와 Application server 사이)장애시 장애 조치 처리를 목적으로 한 REST 기반 서비스

https://kingjakeu.github.io/springboot/2020/07/17/about-eureka/

 

 

JUnit 개요

- JUnit :  자바 프로그래밍 언어용 단위 테스트 프레임워크

- build.gradle 파일을 열어보면 JUnit 사용을 위한 환경설정이 이미 되어있음 => spring web 의존성 설정에서 자동 설정해줌

- JUnit에서 제공하는 어노테이션

 

테스트케이스 작성

1. Class 이름지정

2. 어노테이션 붙이기

3. given = 입력할 데이터 직접 입력

4. when = 입력한 데이터 가지고 실행

5. then = 검증, 테스트용 메서드 실행

class ProductTest {
    @Test
    @DisplayName("정상 케이스")
    void createProduct_Normal() {
        // given
        Long userId = 100L;
        String title = "오리온 꼬북칩 초코츄러스맛 160g";
        String image = "https://shopping-phinf.pstatic.net/main_2416122/24161228524.20200915151118.jpg";
        String link = "https://search.shopping.naver.com/gate.nhn?id=24161228524";
        int lprice = 2350;

        ProductRequestDto requestDto = new ProductRequestDto(
                title,
                image,
                link,
                lprice
        );

        // when
        Product product = new Product(requestDto, userId);

        // then
        assertNull(product.getId());
        assertEquals(userId, product.getUserId());
        assertEquals(title, product.getTitle());
        assertEquals(image, product.getImage());
        assertEquals(link, product.getLink());
        assertEquals(lprice, product.getLprice());
        assertEquals(0, product.getMyprice());
    }
}

Test case 주요 어노테이션 

@Test

- 테스트 대상인 메서드임을 의미

- jUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 @Test마다 객체를 생성

 

@Test(timeout=시간)    ex)@Test(timeout=5000)

- 시간 단위는 밀리초(ex - 5000밀리초)

- 이 테스트 메소드가 결과 반환에 세팅한 시간을 초과하면, 이 테스트는 실패

 

@Test(expected=RuntimeException.class)

RuntimeException 오류가 발생해야 테스트 성공, 그렇지 않으면 실패

 

@Ignore

- @Ignore가 선언된 메서드는 테스트를 실행하지 않게 함

 

@DisplayName("내가 원하는 테스트 상황 메모")       ex) @DisplayName("정상 케이스") 

- 테스트 클래스와 메서드에 이름을 붙여줄 수 있음

- 메모하는 것이라 한글로 작성해도 무방

 

@BeforeClass / @AfterClass : 딱 한번만 수행되도록 지정

@Before / @After : 해당 클래스내의 메소드들이 테스트 되기 전, 후에 각각 실행되게 지정

자주 사용하는 jUnit 메서드

 assertEquals(a,b);   객체 a,b의 값이 일치함을 확인한다.
 assertArrayEquals(a,b);  배열 a,b의 값이 일치함을 확인한다.
 assertSame(a,b);  객체 a,b가 같은 객체임을 확인한다.
 두 객체의 레퍼런스가 동일한가를 확인한다.
 assertTrue(a);  조건 a가 참인가 확인한다.
 assertNotNull(a);  객체 a가 null이 아님을 확인한다.
 assertNull(a); 객체 a가 null임을 확인

 

 

https://learn-away.tistory.com/manage/newpost/55?type=post&returnURL=https%3A%2F%2Flearn-away.tistory.com%2F55 

https://www.nextree.co.kr/p11104/

 

 

@Nested 어노테이션(test)

public class DisplayNameTest {

    @Nested
    class testA {

        @Test
        public void success() { /* */ }

        @Test
        public void fail() { /* */ }
    }

    @Nested
    class testNumber {

        @Nested
        class test1 {

            @Test
            public void success() { /* */ }

            @Test
            public void fail() { /* */ }
        }

        @Nested
        class test2 {

            @Test
            public void success() { /* */ }

            @Test
            public void fail() { /* */ }

        }
    }
}

 

전체적인 코드의 양은 늘어났지만 계층적인 구조가 되어 훨씬 알아보기 편해짐

게다가 클래스로 구분되어 있으니 success  fail 을 중복으로 사용해도 전혀 문제가 없음

실제로 테스트를 돌리면 장점이 더 명확하게 나타남

https://bcp0109.tistory.com/297

 

 

 

 

 

'TIL WIL' 카테고리의 다른 글

20220623 TIL  (0) 2022.06.23
20220622 TIL  (0) 2022.06.23
220620 TIL  (0) 2022.06.20
WIL 9th  (0) 2022.06.20
20220617 TIL  (0) 2022.06.17