昨日書いたエントリ「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-8をwindows-31jにしたら動きました…なぜ;
一応動いたから良しとしたのですが、この設定はテスト時だけにしたいので、とりあえず今のお試しでは、元々WEB-INF配下に置いてあるglassfis-web.xmlを
以下フォルダにコピーして

中身のエンコード部分を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");
}
}
テスト実行すると、昨日エラーだった日本語メソッドのテストが無事通りました!

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