junit

목(Mock)객체를 스터빙(stubbing) 할때 아래와 같이 사용한다. when(..).thenReturn(..) List mockedList = mock(List.class); when(mockedList.get(0)).thenReturn("foo"); 스파이(Spy)객체도 위와같이 스터빙(stubbing)을 할 것같지만, 위와 같이 사용하면 안된다. 그 이유는 스파이 객체는 리얼 객체이기 때문이다. 스파이(Spy) 객체에서는 when(object)을 사용하면, 실제 객체가 호출되버린다. 따라서 스파이(Spy)객체에서는 when을 사용하지 않고 doReturn(..).when(..)을 사용해야한다. Sometimes it's impossible or impractical to use when(Obje..
Junit 프레임워크에서 많이사용되는 모키토 프레임워크에 대해 알아보자. 차별점 테스트 그 자체에 집중한다. 테스트 스텁을 만드는 것과 검증을 분리시켰다. Mock 만드는 방법을 단일화했다. 테스트 스텁을 만들기 쉽다. API가 간단하다. 프레임워크가 지원해주지 않으면 안되는 코드를 최대한 배제했다. 실패 시에 발생하는 에러추적이 깔끔하다. 환경구성 org.mockito mockito-all 1.9.5 test 기본 사용법 Mockito는 Stub 작성과 Verify가 중심을 이루며 다음과 같은 순서로 진행된다. CreateMock : 인터페이스에 해당하는 Mock 객체를 만든다. Stub : 테스트에 필요한 Mock 객체의 동작을 지정한다.(필요시만) Exercise : 테스트 메소드 내에서 Mock객..
Junit을 사용할 때 Hamcrest 프레임워크를 사용하면 가독성은 물론이고 코드의 조건을 조금 더 손쉽게 확인할 수 있다. Hamcrest란? Hamcrest는 소프트웨어 테스트를 위한 framework. 기존의 matchers 클래스를 통해 코드의 조건을 확인할 수 있음 Junit에서 Hamcrest matcher를 사용하려면 assertThat 문 뒤에 하나 또는 여러 개의 matchers를 사용한다. ⇒ Hamcrest는 최대한 가독성이 있는 test scripts를 가지는 것을 목표로 하고 있음 boolean a; boolean b; assertThat(a, equalTo(b)); assertThat(a, is(equalTo(b)); assertThat(a, is(b)); // is 메소드는 ..
PDF 생성과 관련해서 MultiThread 테스트가 필요하였다.테스트 대상이 singleton 이고, @Inject를 하는 부분이 많이 존재하여서 test용 context.xml 를 새로 정의하여 junit을 돌렸다.Thread 생성하는 방법은 기존 Java에서 코딩하는 방식으로 하고 junit을 실행하였는데,, !!!! 먹통!! 이되는 현상이 발생했다..먹통이라하면.. 그냥 반응이 없이 끝나버리는... 로그를 보면 각기 다른 Thread가 생성된 것으로 보이는데 바로 destroy 됬다. (아직도 원인을 찾아보진 못했다.. 나는 일이 많아서...ㅠㅠ) 그래서 MultiThread 테스트 관련해서 구글에 검색을 해보니 goroboUtils 라는 라이브러리를 발견했다.TestRunnable 을 구현해서 ..
스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트이다. 웹을 통한 DAO 테스트의 문제점DAO뿐만 아니라 서비스 클래스, 컨트롤러, JSP 뷰 등 모든 레이어의 기능을 만들고 나서야 테스트가 가능하다는 점이 가장 큰 문제였다.사실 테스트하고 싶었떤 건 UserDao 였는데 다른 계층의 코드와 컴포넌트, 심지어 서버의 설정 상태까지 모두 테스트에 영향을 줄 수 있기 때문에 이러한 방식으로 테스트하는 것은 번거롭고, 오류가 있을 때 빠르고 정확하게 대응하기가 힘들다는 문제가 있다. 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다.(단위 테스트)=> 안하게되면 이유를 찾기위해서 디버거를 돌려가며 스텝별로 확인해야하는 수고를 하게될지도 모른다. 테스트를 위한 ..
깡냉쓰
'junit' 태그의 글 목록