Test Code 썸네일형 리스트형 [TestCode] Mock 객체 만들기 Mockito (JUnit5) - 사용이유 : 테스트 코드에서 객체 생성시 Mokito를 활용하여 임의로 생성해주어 번거로움을 줄일 수 있다. Mockito.mock() 메소드를 활용하여 만드는 법 @Test void createLunchService() { // mock() 메소드로 만드는 방법 LunchRepository lunchRepository = mock(LunchRepository.class); LunchService lunchService = new LunchService(lunchRepository); assertNotNull(lunchService); } - Mockito가 없다면 위 객체를 만들어주는데 필요한 구현체를 모두 구현해 줘야하기때문에 장황한 코드가 발생하지만 Mockito를 활용하여 위처럼 짧고 간결하게.. 더보기 [TestCode] junit-platform.properties 설정파일 (JUnit5) - Junit 설정 파일로, 클래스 패스 루트 (src/test/resources/)에 넣어두면 적용된다. - 파일 생성시 클래스 패스로 인식하지 않을 수 있다. 그런 경우 아래와 같이 설정해주면 된다. - File -> Project Structure -> Modules -> 해당 디렉터리를 Test Resorces로 설정 # 테스트 인스턴스 라이프사이클 설정 junit.jupiter.testinstance.lifecycle.default = per_class - 위처럼 해당 파일에 per_class로 설정해주게되면 전체 테스트 코드는 per_class로 실행되는 걸 확인할 수 있다. - 클래스에서 @Testinstance 어노테이션을 제거해도 위처럼 하나의 인스턴스로 동작하는걸 확인할 수 있다. @T.. 더보기 [TestCode] @TestMethodOrder 테스트 순서 (JUnit5) - 테스트 코드는 내부적으로 정해져있는 순서에 맞춰 실행되기때문에 여러번 실행을 해도 동일한 순서로 동작한다. (junit 내부 로직 변화에 따라 변할 수 있다) @TestMethodOrder : 테스트 메소드를 원하는 순서에 따라 실행하도록 해준다. @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class LunchTest { ``` @Order(1) @custom @DisplayName("테스트 순서 1") void order1_ex() { System.out.println("첫번째 테스트"); } @Order(3) @custom @DisplayName("테스트 순서 3") void order3_ex() { System.out.println("세번째 .. 더보기 [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] @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개의 태그로 나뉘게 된다. - 그대로 실행시에는 두 태그에 해당하.. 더보기 이전 1 다음