mockito

Mockito에서 Multi-Stubbing 적용하기

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

Mockito UnnecessaryStubbingException

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

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

java.lang.NoClassDefFoundError: org/mockito/mock/MockName

powermock을 적용하는데 위와 같은 에러가 발생했다. 처음에는 powermock을 잘못 사용한 줄 알고 이래저래 삽질을 많이 했는데… https://code.google.com/p/powermock/wiki/MockitoUsage13 위 글에 확인하면 mockito와 powermock 끼리 서로 지원되는 버전이 달랐다. mockito는 1.9.0을 사용했는데, powermock은 1.5버전을 사용해서 생긴 문제. 버전을 호환되는 것으로 맞추니 해결되었다.… 더 보기 »java.lang.NoClassDefFoundError: org/mockito/mock/MockName

테스트케이스에서 파라미터(argument) 체크하기

Mockito에서 mock의 동작을 정의하기 위해 when…thenReturn 구문을 많이 사용한다. 보통, 유연성있는 테스트를 위해서 아래와 같이 코딩을 하게 된다.

위처럼 하게 되면, 어떤 int형태가 들어와도 product를 리턴하게 된다. 물론, 100원을 내더라도 커피를 받을 수 있게 된다. 그래서 테스트를 좀더 강하게… 더 보기 »테스트케이스에서 파라미터(argument) 체크하기

java.lang.SecurityException : “org.hamcrest.Matchers”

그동안 mockito만 사용하다가 harmcrest-library를 사용하게 되었다. AssertThat(A, is(B)); 코드를 사용하려면 위 lib가 필요하더라. 그런데 아래와 같은 exception 발생했다.

구글링 결과 두 개의 동일한 lib가 존재해서 충돌나는 것이라고 한다. http://emptylist.wordpress.com/2010/02/14/org-hamcrest-matchers-and-eclipse-java-lang-securityexception/ 알아봤더니 mockito에서 harmcrest core lib를 포함하고 있다. (mockito-all 버전) 그래서… 더 보기 »java.lang.SecurityException : “org.hamcrest.Matchers”