シンプルなS2JUnit4
S2JUnit4はServlet、JTA、EJB3のAPIに依存しているのですが、依存しなくても動くようにしようかなぁと思います。(もちろん、この場合、S2JUnit4の売りのひとつである自動トランザクション開始・ロールバックの機能は実行されません。イメージとしては機能限定のシンプルモードといった感じですね。)
シンプルモードで動かすには次のようにs2junit4.diconを設定するだけでOKにします。ポイントはcontextコンポーネントのクラスがSimpleInternalTestContextであるということです
s2junit4.dicon
<components namespace="s2junit4"> <component name="context" class="org.seasar.framework.unit.impl.SimpleInternalTestContext"/> <component class="org.seasar.framework.unit.impl.ConfigFileIncluderImpl"> <initMethod name="addConfigFile"> <arg>context.testClassShortName + ".dicon"</arg> </initMethod> </component> </components>
テストクラスはこんな感じ。
テストクラス
import org.junit.runner.RunWith; import org.seasar.framework.unit.Seasar2; @RunWith(Seasar2.class) public class HogeTest { public void test() throws Exception { System.out.println("JavaEEのjarがなくても動くよ"); } }
実行に必要なjarはこれら(Servlet、EJB3、JTAに関するjarが含まれていないことに注目)
aopalliance-1.0.jar easymock-2.2.jar javassist-3.4.ga.jar junit-4.3.1.jar log4j-1.2.13.jar ognl-2.6.7.jar s2-extension-2.4.13-rc2-SNAPSHOT.jar 未リリース s2-framework-2.4.13-rc2-SNAPSHOT.jar 未リリース s2-tiger-2.4.13-rc2-SNAPSHOT.jar 未リリース commons-logging-1.1.jar
実行するとこうなります。
実行結果
DEBUG 2007-05-17 00:37:45,187 [main] ファイル(env_ut.txt)がないため環境変数#Envに値(ut)が設定されました DEBUG 2007-05-17 00:37:45,328 [main] S2Containerを作成します。path=s2junit4.dicon DEBUG 2007-05-17 00:37:45,703 [main] S2Containerを作成しました。path=s2junit4.dicon JavaEEのjarがなくても動くよ
ServletやEJB3はいらないけど、JTAは欲しいという場合がありそうなのですが、その場合はSimpleInternalTestContextのプロパティjtaEnabledにtrueをセットしてもらうことにしようと思っています。(もちろん、この場合JTAのjarが必要になります。)
で、JavaEEなjarへの依存がそもそもアプリケーションで必要だったり気にならない方に対しては今までどおりの設定でもちゃんと動くようにします。