test

Controller에서 primitive type과 wrapper type의 변형과 유효성검사

최근에 새로 자바/스프링을 공부하는 친구들에게 질문을 받았는데, 문득 어? 잘 모르겠는데 싶어서 테스트해보았다. 과연 @RequestBody에 null 값을 받게 되었을 때, wrapper type에서는 null로 매핑되겠지만, primitive type에서는 NPE가 발생할까? default value인 0이 매핑될까?

결과를 확인해보니,

primitive type에서는 default value인… 더 보기 »Controller에서 primitive type과 wrapper type의 변형과 유효성검사

Mockito에서 Multi-Stubbing 적용하기

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

@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

ApiService에 대한 Mock Test 예제

Api를 호출하는 서비스에 대한 테스트는 잘 하지 않는 경우가 많다. 혹은 @Ignore를 붙여놓고 필요시에만 풀어서 쓰는 경우도 있다. Mock Server를 제공해서 테스트 할 수 있는 걸 알고 있는데, 자주 쓰지 않으니 쓸 때마다 헷갈려서 기록해둔다.

 

PowerMock 예제

예전에 PowerMock사용법(final class의 테스트)라는 제목으로 블로깅을 한 적 있다. 그게 2011년 7월이니까 근 6년 가까이 PowerMock을 사용할 일이 생기지 않았다. 단순히 SpringRunner나 Mockito만으로도 충분한 테스트를 만들 수 있었다. 그런데 최근에 작업중인 프로젝트에서 시간에 의존하는 테스트가 존재했다. 그래서 평소에는 Ignore시키고 있다가… 더 보기 »PowerMock 예제

Maven Test Skip 파라미터에 대한 차이점

maven에서 테스트를 스킵하는 인자 중에 maven.test.skip과 skipTests가 있다. 난 처음부터 습관이 들어서 maven.test.skip을 사용하고 있지만, 거의 비슷한 역할을 하는 걸로 알고 있었다. 그런데 우연한 기회에 검색을 하게 되었는데 서로 다른 속성을 가지고 있었다. maven.test.skip은 Test코드에 대해 compile, execution을 모두 skip하는… 더 보기 »Maven Test Skip 파라미터에 대한 차이점