1

パラメーターを取る ANTLR のパーサー ルールがあります。

tincture [Tinctures tinctures] returns [Tincture tincture]   
    :   { String tinctureName = ""; }
    (   COLOUR { tinctureName = $COLOUR.text; }
    |   METAL  { tinctureName = $METAL.text; }
    |   FUR    { tinctureName = $FUR.text; }
    )
    {
        try {
            $tincture = tinctures.getTincture(tinctureName);
        } catch (UnknownTinctureException e) {
            throw new MyRecognitionException("Unknown tincture found.", e);
        }
    }
    ;

GUnitでこれのテストを書くにはどうすればよいですか?

パラメータがないため、レクサールールのテストを正常に作成できました。次のように書くと、「java.lang.NoSuchMethodException: mypackage.BlazonParser.tincture()」が発生します。

tincture
    :   "gules"             OK
        "sable"             OK
        "blah"              FAIL

このページ以外に GUnit に関するドキュメントはほとんどありませんが、これについては触れていません。

4

1 に答える 1

1

公式ドキュメントを見ると、テストするルールにパラメーターを提供できないようで、例外が発生します。

java.lang.NoSuchMethodException: mypackage.BlazonParser.tincture()

as パラメータをtincture期待するので。Tinctures

gUnit を使い続け、パラメータを含むルールには JUnit を使用できます。しかし、gUnit と JUnit を混在させるのは少し面倒なので、個人的には、すべての ANTLR テストに JUnit を使用しています。

サードパーティの ANTLR ユニット テスト スイートであるaunitも参照してください。私はそれを詳しく見ていませんし、ドキュメントが不足しているように見えますが、それでも、あなたが探しているものである可能性があります.

于 2011-07-20T09:17:39.597 に答える