EasyMockに触れる(2)

EasyMockで例外のテスト

テストプログラム
package sample.easymock;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.easymock.EasyMock.expectLastCall;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import junit.framework.TestCase;

public class SampleDAOTest extends TestCase {

	private Connection conMock;
         private Statement stMock;
	private ResultSet rsMock;

	protected void setUp() {
		// ①Mockオブジェクトの生成
		conMock = createMock(Connection.class);
		stMock  = createMock(Statement.class);
		rsMock  = createMock(ResultSet.class);
    }
	/*
	 * Test method for 'sample.easymock.SampleDAO.selectSample(Connection, String)'
	 */
	public void testSelectSample2() throws Exception {
		
		// ②期待値の設定
		expect(conMock.createStatement()).andReturn(stMock);
		expect(stMock.executeQuery("select * from sample")).andThrow(new SQLException("DB接続でえらー!!!"));
		
		replay(conMock);
		replay(stMock);
		
		// ③モックテストの実施
		SampleDAO dao = new SampleDAO();
		try {
			dao.selectSample(conMock, "select * from sample");
			fail("SQLExceptionがthrowされるはず");
		} catch(SQLException e) {
			System.out.println(e.getMessage());
		}
		
		// ④モックテストの検証
		verify(conMock);
		verify(stMock);

	}
}