티스토리 뷰

개발자료

[테스트] JUnit, Mocktio 간단사용기

임다솜 임다솜 2017.04.23 22:09


Mockito 설명 잘 되어 있는 사이트 http://javacan.tistory.com/entry/MocktestUsingMockito


1. JUnit 사용하기

메서드에 @Test 어노테이션을 추가하면 알아서 Import 해준다!


2. intelliJ에서 모키토 설치하기

    • 1. Mockito Code Generator Plugin 설치
    • 2. Byte Buddy jar 다운받고 Dependency 추가


1. 인텔리 제이 Settings에서 Mockito Code Generator 플러그인을 설치한다.


2. 아래의 Byte Buddy와 objenesis라는 jar 3가지를 Dependency에 추가한다.

첨부파일 다운

byte-buddy-1.6.13.jar

byte-buddy-agent-1.6.13.jar

objenesis-1.2.jar



3. 사용해보기

package gostopgame.test;

import gostopgame.base.GameBoard;
import gostopgame.base.GameRule;
import gostopgame.base.GoStopGame;
import gostopgame.base.IGameProcessor;
import gostopgame.config.Configurator;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.mockito.Mockito.when;

/**
* Created by dasom on 2017-04-02.
*/
@RunWith(MockitoJUnitRunner.class)
public class TestGoStopGame {

@Mock private GameRule gameRule;
@Mock private GameBoard gameBoard;
@Mock private IGameProcessor gameProcessor;
@InjectMocks private GoStopGame goStopGame;

@Test
public void testCase1() {
when(gameRule.getNumOfMaxPlayer()).thenReturn(new Integer(2));

goStopGame.initPlayer(Configurator.getGamerList1());
Assert.assertEquals(goStopGame.getGamerList().size(), Configurator.getGamerList1().size());

goStopGame.initGame();
goStopGame.startGame();
}

@Test
public void testCase2() {
Assert.fail("fail test");
}
}


3.1 JUnit 사용해보기

JUnit은 단위 테스트 도구이고, 이클립스나 인텔리제이나 메서드 위에 @Test 어노테이션을 붙이면 알아서 Noti가 뜨거나 Import된다!

이렇게 되면 @Test가 붙은 메서드에 대해 코드를 테스트해준다. 당연히 여러개의 메서드에 @Test를 붙일 수 있고, 그에 대해 Success, Fail을 분석해준다.

다음은 TestGoStopGame을 실행하여 JUnit이 분석한 결과이다. 첫번째 테스트는 성공이고, 두번째 테스트는 실패하였음을 직관적으로 볼 수있다. 테스트에 소요된 시간도 확인할 수 있다.



3.2 Mockito 사용해보기

Mockito 사용을 위해서는 다음 세팅이 필요하다.

테스트 클래스에 RunWith라는 어노테이션을 붙여주고 MockitoJUnitRunner.class를 인자로 넣어준다.

@RunWith(MockitoJUnitRunner.class)


다음은 Mock 객체를 만드는 어노테이션이다. @Mock 어노테이션을 이용하여 간단하게 Mock 객체 생성이 가능하다.

@Mock private GameRule gameRule;
@Mock private GameBoard gameBoard;
@Mock private IGameProcessor gameProcessor;


다음은 DI를 해주는 어노테이션이다. GostopGame이라는 클래스는 아래와 같이 세개의 인자를 매개로 받는 클래스이고, @InjectMocks를 통해 Mockito가 DI를 자동으로 해준다!

@InjectMocks private GoStopGame goStopGame;

public class GoStopGame {

private ArrayList<Gamer> gamers;
private GameBoard gameBoard;
private GameRule gameRule;
private IGameProcessor gameProcessor;

public GoStopGame(GameBoard gameBoard, GameRule gameRule, IGameProcessor gameProcessor) {
this.gameBoard = gameBoard;
this.gameRule = gameRule;
this.gameProcessor = gameProcessor;
}


다음은 Mock객체가 원하는 값을 리턴하도록 세팅하는 방법이다. Mock객체는 더미값을 가지는 객체이지만 테스트에 필요한 특정값을 리턴해야 할 경우가 있다. 이런 경우에는 다음 메서드를 통해 세팅한다.

when(gameRule.getNumOfMaxPlayer()).thenReturn(new Integer(2));


그 밖의 다양한 기능이 있지만 생략한다! 맨 위에 참고 사이트를 참고!!

댓글
댓글쓰기 폼
공지사항
Total
41,169
Today
69
Yesterday
59
링크
TAG
more
«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
글 보관함