Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Arquillianで日本語メソッドのテストが実行できなかった問題の回避法

昨日書いたエントリ「Arquillianで日本語メソッドのテストが実行できない…
が一応解決?回避?できたので書いておきます。

実行環境

Arquillianのテスト作成手順は自分向けにも別途まとめたいのですが、とりあえず今お試ししている環境をざっくりと。

NetBeans7.2.1
Mavenで作ったJava EE6のwebプロジェクト
EclipseLink 2.3.2
組み込み版のApache Derby 10.9.1.0 (DBテストが楽なため)
JUnit 4.11
Arquillian 色々(junit-containerやglassfish-embedded-3.1など)

回避法

Arquillianの問題ではなく、試験で使っている組み込みGlassFishに設定が足りなくて動かなかったっぽいです。
普段GlassFishを利用する際、文字化けを防ぐためにglassfis-web.xml

<parameter-encoding default-charset="UTF-8"/>

という定義を含めていますが、Arquillianでwarを生成するコードの所で、これ入れてないよなぁ、とふと思って入れてみたら、また別の文字化けしました(^^;汗
でもこれで変わるなら、と試しにUTF-8windows-31jにしたら動きました…なぜ;

一応動いたから良しとしたのですが、この設定はテスト時だけにしたいので、とりあえず今のお試しでは、元々WEB-INF配下に置いてあるglassfis-web.xml
以下フォルダにコピーして
f:id:kikutaro777:20130108105924j:plain

中身のエンコード部分をUTF-8からwindows-31jに書き換えました。

<parameter-encoding default-charset="windows-31j"/>

で、Arquillianのテストコードでは、war作る所で1行追加します。

@Deployment
public static Archive createDeployment(){
    return ShrinkWrap.create(WebArchive.class, "OpportunityListBeanTest.war").
        addPackage(LogExceptionInterceptor.class.getPackage()).
        // ...
        // 必要なパッケージを繰り返し加える
        // ...
        addAsResource("META-INF/persistence.xml").
        addAsWebInfResource(new File("src/test/resources", "glassfish-web.xml")). //これを追加
        addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    }
}

テスト実行すると、昨日エラーだった日本語メソッドのテストが無事通りました!
f:id:kikutaro777:20130108105933j:plain

良かったー。これでチーム内にテストコードの日本語メソッドを普及できそうです。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村