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://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 |