H2 DataBase Engineを使ってみよう〜混迷編〜
一通りモノができたところでテストでも書いて動作を確認してみましょう
redrisefirm.sample.h2.dao.ColorDaoTest.java
public class ColorDaoTest extends S2TestCase { private ColorDao dao; protected void setUp() throws Exception { super.setUp(); include("test.dicon"); } public void testGetAllColors() { List list = dao.getAllColors(); assertEquals("リストのサイズが一致しません", 2, list.size()); } }
ビルドをしてJUnitテストを実行
む、そんなテーブルはねぇ!とかほざいてる。う〜っ、てことはスキーマが一致してないのかな?
じゃいいや、スキーマ作ったる。
create schema red authorization sa; create table RED.COLOR(id numeric not null primary key,name varchar2(30)); insert into RED.COLOR values(1,'red'); insert into RED.COLOR values(2,'blue');
さ、これで出来てるハズ
この状態で
SELECT id,name FROM RED.COLOR;
を実行してみる。すると
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はorg.h2.jdbc.JdbcSQLException: Schema RED not found [90079] Caused by: org.h2.jdbc.JdbcSQLException: Schema RED not found [90079]
ウソだろ〜orz。わけわからんのですが。
しかたないので荒業。JDBC経由でcreate table文叩いて、どこにできるかを確認してみよう。
サクサクと書いて実行。
アレ、できてない。おかしい・・・・。影も形も現れない。でもJAVAからはアクセスできる。わけがわからんぞ。