java

Mockito에서 Multi-Stubbing 적용하기

Overview 팀에서 초기부터 Junit5를 적용하다보니, MockitoExtension을 제대로 제공받지(?) 못했다. 그래서 오픈소스로 공개되어 있던 것 중에 하나를 그냥 복사해서 프로젝트내에 class를 두고 사용했다. 그러다가 최근에 SpringBoot에서 Junit5를 지원1 해주는 김에 SpringBoot로 의존성 관리하도록 바꿨다. 그랬더니 자연스럽게 Mockito 버전도 올라가고, MockitoExtension이 제공되고… 더 보기 »Mockito에서 Multi-Stubbing 적용하기

데이터 분석의 명암

최근에 들어서 데이터의 수집과 통계 자료를 통해서 현상을 파악하고 새로운 트렌트를 찾으려는 시도가 많아졌다. 많은 업체에서는 데이터를 기반으로 UX를 분석하기 위해 A/B 테스트를 도입하기도 하고 이를 회사의 장점으로 채용 공고에 소개하는 경우도 많이 있다. 그간 얼마나 주먹구구식의 의사결정이 있었는지는 모르겠지만,… 더 보기 »데이터 분석의 명암

2020 SpringOne 소식

코로나19는 순식간에 우리 일상을 디지털의 세계로 바꿔놓았다. 비디지털의 세계(쇼핑, 교육, 회의)의 변화에 호응하는 것인지, Best Practice를 보여주려는 것인지 세계 최대 규모의 개발 컨퍼런스 중 하나인 SpringOne도 온라인으로 진행하게 된다. 게다가 온라인이라는 장점을 십분발휘해서, All virtual, All free이다. 9월 1일 주간이라고… 더 보기 »2020 SpringOne 소식

Dtos vs Dtoes

List 타입을 네이밍할 때 올드스타일은 아래처럼 했다.

그런데 최근(엄밀히는 최근도 아니… 오래됐…)에는 복수형을 사용하는 추세이다.

그런데!! Dto는? 예를 들어,  MemberDto가 있다고 하면 복수형은? Dtos일까, Dtoes일까? 실제로 현업을 하다보면 두 가지를 혼용해서 쓰게 된다. (그리고 intellij는 spell check로 둘… 더 보기 »Dtos vs Dtoes

@SpringBootTest + mockMvc vs @WebMvcTest

테스트를 작성하려고 했더니, 아래와 같은 오류가 발생했다.

처음에는 왜 Bean을 인식하지 못하는지, 해당 Bean의 선언과 Configuration에서 Bean Scan Scope를 확인했는데 모두 정상이었다. 나중에 알게된 사실1 인데, 같이 일하는 사람과 서로 테스트의 방식이 달랐던 것이다. 평상시에 내가 제일 즐겨하는 controller… 더 보기 »@SpringBootTest + mockMvc vs @WebMvcTest

Mockito UnnecessaryStubbingException

그동안에 테스트를 진행할 때, 테스트의 분기와는 관계가 없는 어쩌면 자연스럽게 처리되어야 하는 Stub에 대해서는 @BeforeEach문에 적는 경우가 많았다.

Spring Context를 사용하지 않는 이상, @Autowired된 Bean들은 모두 Mock으로 생성을 해야 되는데, 테스트의 흐름과 관계없이 그냥 자연스럽게 되는 경우 (위의 케이스의… 더 보기 »Mockito UnnecessaryStubbingException

gradle out of memory 발생시

최근 프로젝트에서 조금 커다란 멀티모듈을 구성했더니, gradle build가 너무 오래 걸리고 중간에 out of memory를 발생시켰다. 그래서 intellij의 settings > Compile 옵션에서 JVM Option에 -Xmx1024m으로 메모리를 잡아주었는데도 동일했다. 좀 검색을 했더니1 gradle.properties 파일에 org.gradle.jvmargs=-Xmx1024m로 설정해주니 빌드가 쾌적해졌다. https://fishpoint.tistory.com/1671 ↩

H2 DB Not Null 컬럼에 Null을 insert하면 발생하는 일

일단 아무런 문제가 없는 간단한 Entity와 Repository를 만들고, application.yml에 h2 DB에 대한 정보를 적어둔다.

그런 후에 아래 테스트를 실행시켜보자.

테스트가 성공하고, 결과값이 나온다. column은 not null로 선언되어 있었다. 그런데 null로 insert가 성공한 것이다.

없는 것이… 더 보기 »H2 DB Not Null 컬럼에 Null을 insert하면 발생하는 일

java.sql.SQLException: Unknown system variable ‘performance_schema’

오류를 고쳤으면 공유하는 것이 미덕이라 생각되어 적어둠 SpringBoot 2.1.8로 올렸더니 mysql connector에서 오류가 발생하여 고생했는데, implementation(“mysql:mysql-connector-java:8.0.15”) 라고 버전을 명시하니 오류가 사라짐. 현재 최신 버전은 8.0.16인데, 호환성에 문제가 있는 듯. 아래 링크를 보면 MySQL쪽에서 호환성 처리를 해줘야만 된다고 한다. ref. https://stackoverflow.com/questions/56893867/error-connecting-to-memsql-with-mysql-j-connector

Lombok @Data에서 기본 생성자는?

Lombok을 사용했을 때, @Data를 붙이면 기본생성자로 @NoArgsConstructor를 생성해주는 줄 알았다. 그런데 누가 물어봐서 대답하려고 보니, 명확하게 모르는 것을 깨닫고 찾아보았다. 1 @Data를 붙이게 되면, 일반적으로는 @NoArgsConstructor를 만들어주는 것처럼 보인다. 하지만 엄밀히 말하면 @NoArgsConstructor가 아니라 @RequiredArgsConstructor가 생성된다. 즉, final접근자가 붙어있거나 @Nonnull 애노테이션을… 더 보기 »Lombok @Data에서 기본 생성자는?