2012-01-31 7 views
2

テストコードでMixinsを使用してテスト全体でユーティリティメソッドを共有します。私は@TestFor@Mixinの書いたテストを持っています。私が見ている振る舞いは、@TestFor注釈があるときには、私の@Mixinコードが表示されず、実行時にMissingMethodExceptionが返されるということです。 @TestForを削除すると正常に動作します。以下は私がしようとしているものの単純化された例です。@TestForと@Mixinを使用したGrails 2.0ユニットテスト

@Mixin(TagLibTestUtils) 
@TestFor(ErrorMessageTagLib) 
class ErrorMessageTagLibTests { 

    @Test 
    void stuff() { 
     something() 
    } 
} 

class TagLibTestUtils { 

    def something() { 
     println ">>> HERE" 
    } 
} 

だから私の質問は、@Mixin@TestFor注釈が一緒に動作しないのですか?あるいは私はここで何か間違っているのですか?

答えて

4

Grails 2.0を使用していると仮定すると、@Mixinの代わりに@TestMixinになるはずです。

あなたはsource for the TestForを見れば、あなたはこのコメントが表示されます:あなたに感謝し、

/** 
* Used to indicate the class under test. Triggers the @TestMixin AST transform for the given artefact type. 
* 
* @author Graeme Rocher 
* @since 2.0 
*/ 
+0

作品! TestMixinの使用を強制するために変更が加えられた理由についての洞察はありますか? –

+0

私は知らないのでしょうか?多分、@Mixinに設定されているものとは異なる[RetentionPolicy](http://docs.oracle.com/javase/6/docs/api/java/lang/annotation/RetentionPolicy.html)が必要でした。たぶんgroovy.langではなく 'grails.test'パッケージの一部にしたいと思ったかもしれません –

+0

クール、ありがとう。私はあなたがそうすることができたら、明日に賞金を授与します:) –

関連する問題