[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 メーリングリストの案内