[Spring] Mock Junit Test Example
Spring에서 Junit만 사용하여 통합테스트만 하고있었다. 근데 점점 규모가 커지면서 테스트의 시간이 늘어나기 시작해서 단위테스트 방법을 찾아보다가 Mockito의 기능을 확인하고 예제로 남긴다.
테스트 환경 java : 1.8 jdk spring-version : 4.1.4.RELEASE build : maven
pom.xml에 추가된 의존 라이브러리
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version> //4.1.4.RELEASE
<scope>test</scope>
</dependency>
TEST class 소스
@RunWith(MockitoJUnitRunner.class)
public class serviceTest {
@Mock
private TestService service;
private Test test;
@Before
public void setup() {
this.test = new Test();
this.test.setValue("테스트");
this.test.setId(1);
}
@Test
public void 테스트ID로_값호출() {
given(service.findById(any())).willReturn(test);
Test param = new Test();
param.setId(1);
final Test returnValue = service.findById(param);
Assert.assertNotEquals(null,returnValue.getValue());
}
}
매우 기본적인 예시를 작성했다. 추후에 복잡하게 변경되면 다시 작성해야겠다. TDD에서 좀 더 발전된 예시가 BDD(Behavior Driven Development)이다. 행동으로 진행하며 테스트를 진행하는 방법이다. BDD는 시나리오 기반 테스트를 진행하며, TDD는 함수 기반 테스트를 진행한다. 하나의 시나리오는 Given, When, Then구조를 가지는 것으로 기본패턴을 권장한다.
@Test
public void bddTest() throws Exception{
// given : 선행조건 기술
// when : 기능 수행
// then : 결과 확인
}
출처 : https://cornswrold.tistory.com/366 출처 : https://beomseok95.tistory.com/293