Challenge Engineer Life !

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

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へ
にほんブログ村