Devlopment/Unit Test
[PowerMock] Class.class mock 처리하기
.class에 대해 mock 처리를 해야 할 때가 있다.이럴 때는 역시 파워목!MockGateway.MOCK_GET_CLASS_METHOD를 true로 설정하면 된다. TestCode.javaimport org.powermock.core.MockGateway; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; @PowerMockIgnore({"javax.crypto.*", "net.spy.memcached.*"}) @RunWith(PowerMockRunner.class) public class TestClass { @T..
PowerMock 테스트, 객체 생성시 예외 발생
단위 테스트시에 객체 생성이 될 때, 예외가 발생을 하게 해야 하는 경우가 있다.이런 경우에 PowerMock을 이용하여 테스트한다. - 객체 생성시 예외 발생시키기 -import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org...
java Reflection을 이용한 테스트
생성자가 private일 경우 테스트 필요시 처리. 생성자 호출 Constructor constructor = AtinStory.class.getDeclaredConstructor(); // 생성자가 private method인지 검사가 필요할 경우 사용, Modifier를 통해 기타 체크 가능 assertTrue(Modifier.isPrivate(constructor.getModifiers())); constructor.setAccessible(true); constructor.newInstance(); 파라미터가 있는 생성자의 경우 Constructor constructor = AtinStory.class.getDeclaredConstructor(HttpServletRequest.class, Http..
JUnit – 파라미터 테스트 (Parameterized Test)
단위 테스트시에 파라미터에 따라서 다양하게 테스트를 해야 하는 경우가 있다.이런 경우에 변경되는 파라미터에 대해 일일히 개발하거나 파라미터를 공통화해서 진행을 하기도 하는데이럴 필요 없이 이미 다양한 파라미터에 대해 테스트할 수 있는 Parameterized가 있다. - 사용법 - 1. @RunWith(Parameterized.class) 선언 필요2. 변경되면서 테스트가 필요한 파라미터 조건 선언2.1. @Parameter를 붙여준다.2.2. 파라미터는 반드시 public으로 선언해줘야 한다. 3. 파라미터 값들에 대한 테스트 목록 설정이 필요3.1. @Parameters public static Collection data()로 선언해서 구현 ParamTest.javaimport org.junit.B..
Powermock maven 설정
pom.xml 테스트 설정powermock 설정시 일부 라이브러리간 실행 안되는 문제가 안되서 기록해준다. Test.javaimport static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.Test; import org.junit.runner.RunWith; import org...
테스트 주도 개발(Test Driven Development) 1
근래 TDD에 관심을 갖게 되었다. 꾀 효율적인 개발 기법인데 안타까운 점은 이러한 것을 쓰는 회사나 팀이 많지 않을것 같아서, 개인적으로 공부하지 않는한 배울 기회가 별로 없을 것 같다. 나는 단위테스트에 대해 공부하다가 알게 되었는데 꾀 좋다. 단순한 테스트 기법이 아닌 좋은 분석기법이자 설계기법이다. 기존에 프로그래머는 개발을 먼저 하고 그것을 테스트하는 코드를 만들게 됀다. 회사에서 역시 잘 돌아가나 확인하고 잘 돼네?라고 끝나기도 한다. 지금 생각해보면 정말 체계적이지 못한 방법이다. 나도 아직 이 테스트주도개발이 익숙하지 않지만 숙달시켜보려고 한다. 안타까운 점은 체계적이고 정도를 지키는 회사의 부서가 아니라면 이 방식을 계속 쓰기가 힘들것 같다. ※ 테스트 주도 개발(Test Driven D..
단위테스트. JUnit
오랜만에 포스팅이다. 자바 웹 관련 개발자들과 애기하다보면 JUnit에 대한 이야기가 늘 나온다. 사실 난 그동안 테스는 main()을 통해서만 테스트만 해왔었다. 업무적으로 JUnit을 써볼 기회가 많지도 않긴 했지만 전문가와 단위테스트에 대한 이야기가 나왔는데 내가 추상적으로 이야기했더니 무시를 당했다. 내가 화술이 부족해서(모르는 것도 아는 것처럼, 아는 것은 더 부풀려서 하는) 그럴수도 있지만, 사실 알고만 있을뿐 내가 개발에 직접 사용해보지 않았으니까 그러려니 했다. 그리고 오늘 웹에서 자료를 찾아가며 사용해보았는데, 이것은 신세계였다. 그동안 난 일부 기능들에 대한 테스트를 각 main()을 통해 하였는데 사실 지저분하고 매우 번거로운 작업이다. 각 테스트를 위한 코드를 작성했다가 주석처리를 ..