[Seasar-user:20715] [S2Junit4]テストケースでの自動トランザクション制御
石川雅之 - エクスマート
[E-MAIL ADDRESS DELETED]
2011年 4月 7日 (木) 13:11:18 JST
お世話になっております。石川と申します。
S2Junit4を使ったテストケースで、テストメソッドの実行後に
トランザクションがロールバックしてくれず、困っております。
テスト対象のコンポーネントはrequiredTx設定でトランザクションが
開始されていますが、テストメソッドの開始時にトランザクションが
開始されていないようです。
何か設定漏れがあるかと思うのですが、もしおわかりになりましたら
ご教授頂ければと思います。
diconファイルとテストクラスのソースを本メールの最後に記載させて
頂きます。
少し気になっている点が1つあります。
S2Junit4のリファレンスでは、各テストクラス毎にテスト用のdiconファイルを
作成するという記述が見受けられましたが、こちらが原因でしょうか。
(読み間違いであれば申し訳ございません。)
テストでも本番と同じdiconファイルを使用したいと思っておりますので、
この点についてもアドバイス頂ければと思います。
以下、各種ソースになります。
--------------------------------------------------------------------------
□SampleTest.java□
@RunWith(Seasar2.class)
@TxBehavior(value = TxBehaviorType.ROLLBACK)
public class SampleTest {
private TestContext ctx;
private XxxManager xxxManager;
@TxBehavior(value = TxBehaviorType.ROLLBACK)
public void test_テストメソッド() throws Exception {
xxxManager.addData( ... );
}
}
--------------------------------------------------------------------------
□app.dicon□
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="convention.dicon"/>
<include path="s2jdbc.dicon"/>
<include path="j2ee.dicon"/>
<include path="dxo.dicon"/>
<!-- DI設定 -->
<component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
<initMethod name="addReferenceClass">
<arg>@[E-MAIL ADDRESS DELETED]</arg>
</initMethod>
<initMethod name="addClassPattern">
<arg>"aaa.bbb.ccc.impl"</arg>
<arg>".*ManagerImpl"</arg>
</initMethod>
</component>
<!-- インターセプターの定義 -->
<component name="exceptionLogging" class="aaa.bbb.ccc.util.interceptor.ExceptionLoggingInterceptor">
</component>
<!-- インターセプターチェインの定義 -->
<component name="domainInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain">
<initMethod name="add"><arg>exceptionLogging</arg></initMethod>
<initMethod name="add"><arg>j2ee.requiredTx</arg></initMethod>
</component>
<!-- インターセプターチェインの設定 -->
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">domainInterceptorChain</property>
<initMethod name="addClassPattern">
<arg>"aaa.bbb.ccc.impl"</arg>
<arg>".*ManagerImpl"</arg>
</initMethod>
</component>
</components>
--------------------------------------------------------------------------
□s2junit4.dicon□
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<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>"app.dicon"</arg>
</initMethod>
</component>
</components>
--------------------------------------------------------------------------
以上、宜しくお願い致します。
石川
Seasar-user メーリングリストの案内