ドキュメントを作成。
@@ -0,0 +1,87 @@ | ||
1 | +s2jdbc-mock | |
2 | +================= | |
3 | + | |
4 | +S2JDBCを使ったサービスやDAOのユニットテストを支援するライブラリです。 | |
5 | +実際にDBに接続するのではなく、実行されたSQLが期待通りのものかどうかをチェックするための手段を提供します。 | |
6 | + | |
7 | +s2jdbc-mockを使用するにはpom.xmlに以下の依存関係を追加します。 | |
8 | + | |
9 | +```xml | |
10 | +<repositories> | |
11 | + <repository> | |
12 | + <id>amateras</id> | |
13 | + <name>Project Amateras Maven2 Repository</name> | |
14 | + <url>http://amateras.sourceforge.jp/mvn/</url> | |
15 | + </repository> | |
16 | +</repositories> | |
17 | + | |
18 | +<dependencies> | |
19 | + <dependency> | |
20 | + <groupId>org.seasar.s2jdbcmock</groupId> | |
21 | + <artifactId>s2jdbc-mock</artifactId> | |
22 | + <version>1.0.0</version> | |
23 | + </dependency> | |
24 | +</dependencies> | |
25 | +``` | |
26 | + | |
27 | +設定ではユニットテスト用のs2jdbc.diconでJdbcManagerを定義している部分をorg.seasar.s2jdbcmock.MockJdbcManagerに変更するだけです。 | |
28 | + | |
29 | +テストケースではorg.seasar.s2jdbcmock.S2JdbcUnitのメンバをstaticインポートしてSQLの検証を行うことができます。 | |
30 | +以下はS2JUnit4を使用した場合のテストケースの例です。 | |
31 | + | |
32 | +```java | |
33 | +package org.seasar.s2jdbcmock.service; | |
34 | + | |
35 | +import static junit.framework.Assert.*; | |
36 | +import static org.seasar.s2jdbcmock.S2JdbcUnit.*; | |
37 | + | |
38 | +... | |
39 | + | |
40 | +@RunWith(Seasar2.class) | |
41 | +public class EmployeeServiceTest { | |
42 | + | |
43 | + protected EmployeeService sampleService; | |
44 | + | |
45 | + @Before | |
46 | + public void init(){ | |
47 | + initS2JdbcUnit(); | |
48 | + } | |
49 | + | |
50 | + @Test | |
51 | + public void testGetEmployeeTx(){ | |
52 | + // サービスのメソッドを実行 | |
53 | + sampleService.getEmployee(1); | |
54 | + // 正規表現でSQLを検証 | |
55 | + verifySqlByRegExp(0, "SELECT .* FROM EMPLOYEE .* WHERE .*EMP_ID = \\?", 1); | |
56 | + } | |
57 | + | |
58 | +} | |
59 | +``` | |
60 | + | |
61 | +上記の例では正規表現で検証していますが、SQLは空白や改行、大文字小文字、コメントなどを適度に正規化して比較しているので、 | |
62 | +厳密に文字列として完全一致するように記述しなくても大丈夫です。 | |
63 | + | |
64 | +サービスクラスのメソッドによってはJdbcManagerの戻り値によって処理が分岐するようなケースもあるでしょう。 | |
65 | +そのような場合はS2JdbcUnit#addResult()メソッドでJdbcManagerが返却する値を設定することができます。 | |
66 | +MockJdbcManagerはSQLを実行するためにaddResult()された値を順番に返却します | |
67 | +(INSERTやUPDATE時の更新件数も戻り値なのでaddResult()で設定しておくことができます)。 | |
68 | + | |
69 | +```java | |
70 | +@Test | |
71 | +public void testGetEmployeeTx(){ | |
72 | + // JdbcManagerの返却値を設定 | |
73 | + Employee result = new Employee(); | |
74 | + ... | |
75 | + addResult(result); | |
76 | + | |
77 | + // サービスのメソッドを実行(上でセットしたエンティティが返却される) | |
78 | + Employee employee = sampleService.getEmployeeList(); | |
79 | + ... | |
80 | +} | |
81 | +``` | |
82 | + | |
83 | +リリースノート | |
84 | +-------- | |
85 | +### 1.0.0 - 20 Mar 2013 | |
86 | + | |
87 | +* AmaterasのMavenリポジトリにデプロイして利用できるようにしました。 |