[Seasar-user:5161] Re: PropertyInterTypeを使用した場合のテスト実行について
AGATA Toshitaka
[E-MAIL ADDRESS DELETED]
2006年 11月 16日 (木) 20:46:42 JST
縣です。
下記対応で、テストが動くことを確認しました。
対応、ありがとうございました。
On 2006/11/16, at 18:00, Koichi Kobayashi wrote:
> 小林 (koichik) です.
>
> 原因分かりました.
>
> Date: Thu, 16 Nov 2006 13:02:12 +0900
> From: AGATA Toshitaka <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:5147] Re: PropertyInterTypeを使用した場
> 合のテスト実行について
>
>>> この現象は,S2FrameworkTestCase がテストメソッドを
>>> 実行するたびにクラスローダーを作成してスレッドの
>>> コンテキストクラスローダーに設定していることと,
>>> S2AOP がエンハンスした (InterType が適用された) ク
>>> ラスを
>>> コンテキストクラスローダーにロードしていることが,
>>> Javassist によってコンパイルされるバイトコードと
>>> 相性がよくないために発生しているようです.
>
> 相性の問題ではありませんでした.
> 縣さんのテストケースは
>
>>> 先に添付した Desc クラスの static フィールドである
>>> useContextClassLoader を true にすると問題になっている
>>> 箇所はクリアしましたが,その後別の例外が発生します.
>
> この対応だけで通りました.
>
> こちらでは S2-Tiger にある Intertype のテストケー
> スを
> S2FrameworkTestCase の派生クラスにして確認していたのですが,
> そこでは可視性がデフォルト (package) のフィールドを使っ
> ており,
> S2FrameworkTestCase がテストメソッドごとに用意するクラスロー
> ダーに
> ロードされたサブクラス (Intertype が適用されたクラ
> ス) は
> JVM にはパッケージが異なると判断されて親クラスのフィールドに
> アクセスできないために例外が発生していました.
>
> 縣さんのように,フィールドが protected になっていれば
> エンハンスされたサブクラスが別のクラスローダーに
> ロードされてもフィールドにアクセスできるので問題ありません.
>
> S2FrameworkTestCase では Desc#useContextClassLoader を
> true に設定してテストメソッドを呼び出すようにします.
> この修正は次のリリースに含まれます.
>
>
> --
> <signature>
> <name>Koichi Kobayashi</name>
> <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
> </signature>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内