분류 전체보기

    Mockito Stub 작성 시 주의 사항

    InvalidUseOfMatchersException https://github.com/HomoEfficio/dev-tips/blob/master/Mockito%20Stub%20%EC%9E%91%EC%84%B1%20%EC%8B%9C%20%EC%A3%BC%EC%9D%98%20%EC%82%AC%ED%95%AD.md#mockito-stub-%EC%9E%91%EC%84%B1-%EC%8B%9C-%EC%A3%BC%EC%9D%98-%EC%82%AC%ED%95%AD com.nhaarman.mockitokotlin2.BDDMockitoKt.given https://github.com/HomoEfficio/dev-tips/blob/master/Mockito%20Stub%20%EC%9E%91%EC%84%B1%20%EC%8B..

    Java 현재 시간 + 랜덤 문자로 고유값 만들기 - with apache commons library (Java Random String)

    Java 현재 시간 + 랜덤 문자로 고유값 만들기 - with apache commons library (Java Random String) Apache Commons의 RandomStringUtils 클래스를 이용하여 랜덤 문자열을 만들 수 있다. RandomStringUtils 을 사용하기 위해서는 commons-lang3이 필요하다. build.gradle 에 아래 항목을 추가한다. implementation 'org.apache.commons:commons-lang3:3.0' import org.apache.commons.lang3.RandomStringUtils; RandomStringUtils.randomAlphabetic(4); 메서드 인자로 생성할 random String의 length를 ..

    SpringBoot 테스트시 초기 SQL 데이터 삽입 - Test SQL

    Spring Boot 테스트 시 데이터를 로딩하는 방법은 직접 코드를 작성하는 방법과 @Sql을 사용하는 방법 2가지가 있다. 1. 직접 코드를 작성하여 데이터 로딩 https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html#testcontext-executing-sql-programmatically) @SpringBootTest @Transactional @TestInstance(TestInstance.Lifecycle.PER_CLASS) class ProductReviewControllerTest { @Autowired private DataSource dataSource; @BeforeAll ..

    Mock vs. Stub vs. Spy

    Mock과 Stub, Spy의 차이점에 대해 알아보기 전에 Test Double에 대하여 먼저 정리해보겠습니다. Test Double 테스트계의 스턴트맨. 영어에서는 Stunt Double이라고 부를 뿐이고, 한국사람들에게 더 익숙한 표현은 스턴트맨입니다. 테스트 코드에서 대역(가짜)을 쓰는 것에 착안하여 이름을 이렇게 지었고, 영화를 찍기 위해 위험한 액션을 대신해주는 것이 스턴트맨이라면 , 테스트를 통과하기 위해 액션을 대신해주는 것이 Test Double입니다. Test Double의 종류 더미 객체 (Dummy Object) Dummy Object는 전달되지만 실제로는 사용되지 않습니다. 일반적으로 파라미터를 전달하기 위한 용도로만 사용합니다. 모의 (Mock) Mock은 메소드를 호출했을 때 사..

    Kotlin Querydsl 설정

    스프링부트 2.7.x 버전대 기준이다. build.gradle.kts 전체 파일 // build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { val kotlinVersion = "1.6.21" id("org.springframework.boot") version "2.7.7" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version kotlinVersion kotlin("plugin.spring") version kotlinVersion kotlin("plugin.jpa") version kotlinVersion // ✅..

    Java Papago 번역 API 사용

    파파고 번역 개요 API 문서 (API 레퍼런스) 구현 예제 - 공식문서(Java) Java를 이용한 Papago API 호출 예제이다. Papago 번역 API는 일 허용량이 10,000 글자이다. 일일 호출양이 끝난 상태. 애플리케이션 등록 https://developers.naver.com/docs/papago/papago-nmt-overview.md#%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%93%B1%EB%A1%9D 애플리케이션 등록 네이버 개발자 센터 상단 Application -> 애플리케이션 등록 -> 애플리케이션 등록 (API 이용신청) 페이지 애플리케이션 이름, 사용 API, 비로그인 오픈 API 서비스 환경 입력 2. 애플..

    MockMvc 테스트시 andExpect(jsonpath())를 이용한 검증방법

    spring-framework/spring-test 테스트 예제 코드 Git Hamcrest 프레임워크 : hamcrest.org/JavaHamcrest/idnex 공식문서 깃허브 - 여기에 다 적혀있다. https://github.com/json-path/JsonPath 좋은 예제 - https://advenoh.tistory.com/28 https://joojimin.tistory.com/52 MockMvc를 이용하면 Json 형식의 API Response를 검증할 수 있다. 이 때 사용되는 것이 JsonPath() 이다. 주요 표현 예 다음은 https://github.com/json-path/JsonPath에서 제시하는 표현식 중 자주 사용되는 표현식에 대한 예이다. 추가적인 표현식은 원문에 자세..

    Java Collection, List, Array 비교, 검증

    예제 List List list1 = Arrays.asList("1", "2", "3", "4"); List list2 = Arrays.asList("1", "2", "3", "4"); List list3 = Arrays.asList("1", "2", "4", "3"); JUnit - Assert @Test public void whenTestingForEquality_ShouldBeEqual() throws Exception { Assert.assertEquals(list1, list2); Assert.assertNotSame(list1, list2); Assert.assertNotEquals(list1, list3); } AssertJ - Assertions @Test public void whenT..

    @WebMvcTest Security 401 403 응답 해결방법 - csrf

    @WebMvcTest Security 401 403 응답 해결 @WebMvcTest는 MVC와 관련된 애노테이션(Controller, ControllerAdvice, Filter, WebMvcConfigurer 등..)이 적용된 Bean들만 불러오고, @Component, @Service, @Repository와 같은 Bean들은 불러오지 않는다. https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTest.html 그리고 @WebMvcTest는 Spring Security를 auto-configure 한다 여기서 문제가 되는 것은 직접 구현한 Sprin..

    Mockito Verify, Mock Object 검증, 호출 횟수 검증

    Mockito Verify 메소드는 특정 동작이 발생했는지 확인하는 데 사용된다. mocking한 메서드가 호출되었는지 확인하기 위해 테스트 메서드 코드 끝에 Mockito 검증 메서드를 사용할 수 있다. https://github.com/WebJournal/journaldev/tree/master/Mockito-Examples 에 더 많은 예제가 있다. Mockito 검증 Mockito verify() 메서드를 사용하여 메서드 호출 수 (call count)를 테스트할 수도 있다. mock 메서드에 대해 정확한 횟수, 적어도 한 번, 최대 호출 횟수를 테스트할 수 있다. verifyNoMoreInteractions() : 모든 verify() 메서드 호출 후에 모든 것이 확인되었는지 확인할 수 있다 ...