Oct 23, 2007
jMock で java.sql.Connection のモックオブジェクト生成にチャレンジ
JMock で java.sql.Connection のモックオブジェクト作成に挑戦してみた。 ・・・と言っても、まだ jMock のサンプルを眺めただけ。
- jMock
- http://www.jmock.org/
サンプルコード - その1
とりあえず基礎の基礎。 単純な java.sql.Connection のモックオブジェクトを作成してみた。 example1 はテスト成功パターン。example2 はテスト失敗パターン。
package jp.in_vitro.codelets.jmock;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.jmock.Expectations;
import org.jmock.Mockery;
public class Codelet {
public static void main(String[] args) throws SQLException {
Codelet me = new Codelet();
me.example0();
me.example1();
}
protected void example0() throws SQLException {
Mockery context = new Mockery();
final Connection connection = context.mock(Connection.class);
context.checking(new Expectations() {
{
one(connection).close();
}
});
connection.close();
context.assertIsSatisfied();
}
protected void example1() throws SQLException {
Mockery context = new Mockery();
final Connection connection = context.mock(Connection.class);
context.checking(new Expectations() {
{
one(connection).close();
}
});
// connection.close();
context.assertIsSatisfied();
}
}
サンプルコード - その2
次に java.sql.Connection から java.sql.Statement を返してみた。 とりあえず指定した java.sql.Statement を java.sql.Connection#createStatement から返すことに成功。
package jp.in_vitro.codelets.jmock;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.jmock.Expectations;
import org.jmock.Mockery;
public class Codelet {
public static void main(String[] args) throws SQLException {
Codelet me = new Codelet();
me.example2();
}
protected void example2() throws SQLException {
Mockery context = new Mockery();
final Connection connection = context.mock(Connection.class);
final Statement expected = context.mock(Statement.class);
context.checking(new Expectations() {
{
one(connection).createStatement();
will(returnValue(expected));
}
});
Statement actual = connection.createStatement();
System.out.println("expected: " + expected + "@" + expected.hashCode());
System.out.println("actual: " + actual + "@" + actual.hashCode());
context.assertIsSatisfied();
}
}
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Library/20071023_01.trackback
writeback message: Ready to post a comment.
