EasyMock과 Untils를 함께 사용한 샘플 소스

다음은 EasyMock과 Unitils를 함께 사용한 샘플의 전체 소스이다.

Test Class

package egovframework.guideprogram.test.testcase.mock;
 
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertNotNull;
import static org.unitils.reflectionassert.ReflectionAssert.assertPropertyLenientEquals;
 
import java.util.Arrays;
import java.util.List;
 
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.unitils.UnitilsJUnit4TestClassRunner;
import org.unitils.easymock.EasyMockUnitils;
import org.unitils.easymock.annotation.Mock;
import org.unitils.inject.annotation.InjectIntoByType;
import org.unitils.inject.annotation.TestedObject;
 
import egovframework.guideprogram.test.target.mock.BoardVO;
import egovframework.guideprogram.test.target.mock.CollaboratorDao;
import egovframework.guideprogram.test.target.mock.EasyMockService;
 
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class EasyMockTest {
 
    /**
     * EgovDao에 대한 Mock Object
     * @Mock : Mock 생성
     * @InjectIntoByType : Dao가 Service에 Inject 됨
     */
    @Mock
    @InjectIntoByType
    private CollaboratorDao mockDao;
 
    /**
     * 테스트 대상 서비스
     * Mock 객체가 Inject될 대상
     */
    @TestedObject
    private EasyMockService service;
 
    /**
     * test fixture 준비
     */
    @Before
    public void setUp() {
        service = new EasyMockService();
    }
 
    /**
     * Mocking하고자 하는 메소드가 리턴값을 갖는 경우에 대한 예
     */
    @Test
    public void testSelectList() throws Exception {
        assertNotNull("테스트 대상이 잘 생성되었는지 확인", service);
        assertNotNull("Mock Object가 잘 생성되었는지 확인", mockDao);
 
        // EasyMock + Unitils를 이용하여 Mocking하고자 하는 메소드를 추가하고 검증한다.
        expect(mockDao.selectList()).andReturn(Arrays.asList(new BoardVO(101), new BoardVO(102)));
        EasyMockUnitils.replay();
 
        // 테스트 대상 메소드를 실행한다.
        List<BoardVO> selectList = service.selectList();
 
        // 결과를 확인한다.
        assertNotNull("테스트 대상이 잘 생성되었는지 확인", selectList);
        assertPropertyLenientEquals("id", Arrays.asList(101, 102), selectList);
    }
 
    /**
     * Mocking하고자 하는 메소드가 리턴값을 갖는 경우에 대한 예
     */
    @Test
    public void testInsert() throws Exception {
        assertNotNull("테스트 대상이 잘 생성되었는지 확인", service);
        assertNotNull("Mock Object가 잘 생성되었는지 확인", mockDao);
 
        BoardVO board = new BoardVO(103);
 
        // EasyMock + Unitils를 이용하여 Mocking하고자 하는 메소드를 추가하고 검증한다.
        mockDao.insert(board);
        EasyMockUnitils.replay();
 
        // 테스트 대상 메소드를 실행한다.
        service.insert(board);
    }
}

Target Class

테스트 대상 클래스(EasyMockService)와 관련 객체(CollaboratorDao), VO 클래스이다.

package egovframework.guideprogram.test.target.mock;
 
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Service;
 
@Service("easyMockService")
public class EasyMockService {
 
    @Resource(name="collaboratorDao")
    private CollaboratorDao collaboratorDao;
 
    public List<BoardVO> selectList() throws Exception {
        List<BoardVO> result =  collaboratorDao.selectList();
        return result;
    }
 
    public void insert(BoardVO vo) throws Exception {
        collaboratorDao.insert(vo);
    }
}
package egovframework.guideprogram.test.target.mock;
 
import java.util.List;
 
public interface CollaboratorDao {
 
    List<BoardVO> selectList();
 
    void insert(BoardVO vo);
 
}
package egovframework.guideprogram.test.target.mock;
 
public class BoardVO {
 
    /** id */
    private int id;
 
    /** userName */
    private String userName;
 
    /** content */
    private String content;
 
    /**
     * Constructor
     */
    public BoardVO() {
        super();
    }
 
    /**
     * Constructor
     * 
     * @param id
     */
    public BoardVO(int id) {
        super();
        this.id = id;
    }
 
    /**
     * Constructor
     * 
     * @param id
     * @param userName
     * @param content
     */
    public BoardVO(int id, String guestName, String content) {
        super();
        this.id = id;
        this.userName = guestName;
        this.content = content;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getUserName() {
        return userName;
    }
 
    public void setUserName(String guestName) {
        this.userName = guestName;
    }
 
    public String getContent() {
        return content;
    }
 
    public void setContent(String content) {
        this.content = content;
    }
}
 
egovframework/dev/tst/mock/easymocktest_소스.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki