読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

Arquillianで日本語メソッドのテストが実行できない…

Arquillian

早速ですが、冬休みに学んだことを昨年末に作ったプロトタイプへ反映してみました。
JUnitは問題なしですが、Arquillianでのテストでは問題が2つほど…orz

Arquillianの環境設定の手順をまだ書いてないままですが、自分向けメモって感じで…。

注入できないと怒られてDeployに失敗する問題

昨日のエントリレベルのテストコードをプロトタイプでも書いて、テスト実行しましたが、とりあえずdeployにこけました。

ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.

という、よくわからないエラーが。
スタックトレースみると

PlainTextActionReporterFAILUREDescription: deploy AdminCommandError occurred during deployment: Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [IMessageDigest] with qualifiers [@Default] at injection point [[field] @Inject jp.co.hoge.hogehoge.controller.DatabaseAuthController.messageDigest]. Please see server.log for more details.

と、dependenciesに満足していない様子。beans.xmlに書いてるのがみえてない感じ…。
war固めるソースはこんな感じでした。

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

ってか、Arquillianのサイトにあるサンプルレベルで書いてるので、いかんすね…。で、調べた所、やはりbeans.xmlを指定する方法が。

ここ↓

addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");

こんな感じ↓にすると(mavenで作ってれば)通常使っているbeans.xmlをみてくれてデプロイ成功&テスト実行できました。やったー。

addAsWebInfResource(new File("src/main/webapp", "WEB-INF/beans.xml"));

日本語メソッドのテストが実行できない問題

Arquillianだって日本語メソッドでテストするー、と思って書いたら…動かない。マジですか。

英語メソッドだと問題なく動いているのに…
f:id:kikutaro777:20130107194523j:plain

日本語メソッドにするとアウトって悲しすぎです。どこかで文字化けちゃって内部でメソッド名が見つからない感じのエラーです。うーむ。
f:id:kikutaro777:20130107194551j:plain

別途要調査…。新年早々「英語メソッドでもいいじゃない」と悪魔がささやいている…が、Java EEではArquillianのテストは絶対使えそうなのであきらめたくない…。

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