이번 포스팅에는 JUnit 테스트할 때 특정 시간동안 테스트가 끝나지 않으면 테스트를 실패시키는 메소드인 assertTimeout과 assertTimeoutPreemptively 메소드 두개를 알아보겠습니다. assertTimeout(Duration timeout, Executable executable) - timeout과 실행 인터페이스인 Executable 타입의 인자를 받는다. executable.execute() 메소드로 실행한 다음에 timeout과 실제 실행시간을 비교하여 테스트가 실패했는지 성공했는지 여부를 판단한다. JUnit 소스 까보기 단점 : 만약에 테스트 자체가 굉장히 오래걸리는 부분을 test 해야한다면 제한시간이 있는데도 모든 테스트가 끝날때 까지 기다려야하는 단점이 존재한다...
안녕하세요. 오늘은 예외처리한 부분을 테스트하기 위한 JUnit 단위테스트 방법을 포스팅하고자 합니다. 보통 대부분의 회사나 프로젝트에서 특정한 목적으로 제작한 커스텀 Exception 객체들이 있을 것입니다. 그러한 경우, 다른 Exception 처리보다 많은 테스트가 필요하게 될텐데요. 그 방법중 하나를 공유해보고자 합니다. 먼저 CustomException 객체를 만듭니다. 매우 간단히 만들었습니다. public class CustomException extends Exception{ public CustomException(String message) { super(message); } } - Exception 객체를 생성하기 위한 생성자만 구현해놓은 정도입니다. 추후 필요한 생성자들을 오버로딩하..
안녕하세요. 오늘은 JUnit4 버전을 사용해서 파라미터를 반복해서 테스트할 수 있는 방법에 대해서 포스팅해보고자 합니다. 이전 포스팅에서는 JUnit5의 테스트 반복에 대해서 다뤄봤는데요. JUnit5에서는 기본적으로 @ParameterizedTest 라는 어노테이션을 사용해서 @CsvSource, @ValueSource라는 어노테이션을 이용하여 파라미터를 전달하였습니다. 하지만 JUnit4버전에서는 별도의 의존성을 추가해주셔야 하는데요. 바로 JUnitParams라는 의존성입니다. pom.xml에 JUnitParams의 의존성을 추가해줍니다. pl.pragmatists JUnitParams 1.1.1 test 해당 의존성을 추가하면 테스트 클래스를 생성할 때, @RunWith() 어노테이션의 argu..
안녕하세요. 오늘은 여러가지 파라미터값으로 하나의 단위테스트를 반복적으로 실행하여 하나의 단위테스트라도 여러 파라미터값으로 복합적으로 테스트해볼 수 있는 내용을 포스팅해보고자 합니다. 사전준비 pom.xml에서 어떤 의존성을 사용하실지 헷갈리실 분들을 위해 pom.xml 을 보여드리도록 하겠습니다. 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE woo.sunghwan inflean-the-java-test 0.0.1-SNAPSHOT inflean-the-java-test Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter org.spri..
JUnit5 Assertion 기본 메소드 종류 1. assertTrue, assertFalse (boolean condition, String message) - argument로 특정 조건 및 boolean 값을 넘기고 assertTrue인 경우 false일때, assertFalse인경우 true일때, junit 에러를 발생시키며 message를 메시지로 리턴한다. 2. assertNotNull, assertNull (Object object, String message) - argument로 객체를 넘기면 객체가 null 일경우와 not null 일 경우 예외 메시지로 message를 리턴하게 된다. 위의 두가지 메소드와 엇비슷한 용도로 사용된다. * 위의 메소드처럼 assertXXX로 시작하는 메..
안녕하세요. 오늘은 JUnit 5버전에 대해서 포스팅하고자 합니다. 현재 스프링부트 버전이 2.3버전이 나온걸로 알고 있습니다. 기본적으로 스프링 부트 프로젝트를 생성하니 2.3이라고 적혀있더라구요. 그런데 스프링부트 2.2버전부터 스프링 테스트 도구로 JUnit 5 버전을 채택했다고 합니다. 따라서 2.2 이후 프로젝트에서는 JUnit 5버전을 사용하실 수 있게 됬다고 합니다. 스프링부트 2.3 버전도 이미 나왔고, 2.2 버전에서 채택된 JUnit5 버전을 사용하지 않을 이유가 없다고 생각해서 JUnit5 버전을 채택했습니다. JUnit 5버전은 패키지명에 jupiter가 들어가니 확인해주시기 바랍니다. 저는 Spring Initailzr를 통해 스프링부트 프로젝트를 만들었습니다. 프로젝트를 생성하는..
안녕하세요. 최근에 백기선님의 유튜브를 자주 보곤합니다. 그 중에서는 더 나은 개발자로 성장하는 팁이라는 주제로 사연을 소개하면서 스토리텔링을 해주시는걸 자주 듣곤 하는데요. 그 팁중 하나로 테스트코드를 잘 작성하는 연습을 하는 개발자가 좋다는 이야기를 넌지시 들었어요. https://www.youtube.com/watch?v=s_Zdl28NEM4&t=131s 저는 테스트 코드를 주로 JUnit을 사용하고 있고, 개인적으로나 회사업무에서나 JUnit을 사용하여 테스트 코드를 짜면서 개발을 하고 있죠. 그래서 나름 내가 좋은 방향으로 가고 있구나 안심을 하면서 영상도 즐기면서 시청했었습니다. 그러던 중 댓글에서 "테스트코드가 뭐죠? 어떻게 짜는거죠?" 라는 댓글이 하나가 보이더라구요. 불과 몇달전까지만해도..