Test 9

JaCoCo

JaCoCo 플러그인은 Java 코드에 대한 code coverage metrics를 제공한다. 아래의 모든 코드는 Gradle 8.1 버전을 기준으로 작성됨 Tasks Java 플러그인이 적용된 프로젝트의 경우 JaCoCo 플러그인은 아래와 같은 태스크를 자동으로 추가 jacocoTestReport 테스트 작업에 대한 code coverage report를 생성 jacocoTestCoverageVerification 테스트 작업에 대해 지정된 규칙에 따라 code coverage metrics 검증 1. JaCoCo 플러그인 적용 plugins { id 'jacoco' } 2. code coverage reports와 test 실행 사이에 의존성을 정의하고 싶을 때 test { finalizedBy j..

Test 2023.04.20

WebMvcTest 에러

WebMvcTest 어노테이션을 사용해서 컨트롤러를 테스트하는 코드를 작성하면서 발생한 문제에 대해 정리했다. 1. jpaAuditingHandler 빈 생성 에러 // 에러로그 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean wit..

Test 2023.03.08

[Error] org.mockito.exceptions.misusing.PotentialStubbingProblem: Strict stubbing argument mismatch. Please check:

when(jwtUtil.generateToken(user)).thenReturn(access_token); 테스트 코드에서 파라미터로 user를 넣었다. User user = User.builder() .username(username) .email(account.getEmail()) .role(account.getRole()) .build(); LoginResponse res = LoginResponse.builder() .accessToken(jwtUtil.generateToken(user)) .refreshToken(refresh_token) .build(); 테스트하려는 서비스 코드의 일부분 Strict stubbing argument mismatch가 되는 이유는 user 객체를 생성해서 gen..

Test/Mockito 2023.03.05

[MockMvc] Pageable

@BeforeEach public void before(){ this.mockMvc= MockMvcBuilders.standaloneSetup(new PostRestController(this.postService)) .setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver()) .build(); } class PageableHandlerMethodArgumentResolver 웹 요청에서 페이징 정보를 추출하므로 Pageable 인스턴스를 컨트롤러 메소드에 주입한다. class StandaloneMockMvcBuilder @Controller 등록을 허용하는 MockMvcBuilder는 일반 단위 테스트와 유사한 컨트롤러의 인스턴스화 ..

Test/Junit 2022.09.17

[Error] Internal Error occurred. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests

Junit5는 JUnit Platform, JUnit Jupiter, JUnit Vintage 모듈이 있어야한다. testImplementation 'org.junit.jupiter:junit-jupiter:5.9.0' testImplementation 'org.junit.platform:junit-platform-launcher:1.9.0' testImplementation 'org.junit.vintage:junit-vintage-engine:5.9.0' 참고 👇 https://junit.org/junit5/docs/current/user-guide/ JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model ..

Test/Junit 2022.09.12

JUnit5

h2 데이터베이스로 테스트할 때 application.properties에서 아래와 같이 변경(수정해야 하는 부분만 가져옴) Mockito를 사용하면 DB 안 거치니까 필요없다. spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver JUnit 5는 Architecture Jupiter, Vintage, JUnit Platform로 나뉘어 진다. Jupiter와 Vintage 모두 JUnit Platform을 구현하는 구현체 Jupiter는 JUnit 5의 구현체 @Autowired를 선언하면 Jupiter가 Spring Container에게 빈 주입을 요청 어노테이션 @Bef..

Test/Junit 2022.01.27