問題タブ [gunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven-2 - maven-gunit-plugin を使用して JUnit ソースを生成する方法
maven-gunit-pluginを介してgunit (ANTLR 文法ユニット テスト ツール)を実行するように Maven を構成しました。ただし、gunit には 2 つの異なるモードがあります。最初のモードでは、gunit がインタープリターとして機能し、*.gunit (または *.testsuite) ファイルを読み取って解釈し、結果を表示します。次のように構成できます。
2 番目のモードでは、JUnit で実行できるソース コードが gunit によって生成されます。インタープリターとして機能する代わりに、maven-gunit-plugin に JUnit ソースを生成するように指示するにはどうすればよいですか?
いくつかのメモ:
- テスト フェーズを「generate-test-sources」に変更して、maven プラグインを正しい時間に実行することができます。
- maven-gunit-plugin に関する有用なドキュメントが見つかりませんでした
- exec-maven-pluginを使用して、特定のコマンド ライン オプションで gunit を実行する人を見てきましたが、私はそれを行うつもりはありません。
編集/解決:
さまざまな回答を読んだ後、maven-gunit-plugin を含む ANTLR ソース コードをダウンロードしました。プラグインは、 junit 生成をサポートしていません。現在、gunit-maven-plugin の codehaus スナップショットと exec プラグインが唯一のオプションであることが判明しました。
junit - gunit ファイルを翻訳して作成した Antlr 生成の junit ファイルの使用方法
Antlr で複数の戻り値の単体テストを作成しようとしています。私はgunitを使って定期的に単体テストを行っています。ただし、 http: //www.antlr.org/wiki/display/ANTLR3/gUnit+-+Grammar+Unit+Testing の指示に従って生成される junit Testgrammar.java ファイルをどうするかはよくわかりません。
私は実行してみました:
java -cp "./antlr.jar" Testgrammar.java
しかし、次のエラーが表示されます。
スレッド「メイン」の例外 java.lang.NoClassDefFoundError: Testgrammar/java
java - GUNITをMAVENで使用するにはどうすればよいですか?
によって生成されたMavenプロジェクトを考えると:
cf:http ://www.antlr.org/wiki/display/ANTLR3/Building+ANTLR+Projects+with+Maven
そのようなアーキテクチャを持っている:
maven-gunit-pluginをpomに追加することによって:
GUNITファイルはどこにあるべきですか?
更新(すでに):
私はJunitの統合について話しているのではありません(しかし、それが唯一の方法であるなら、私はきっとこれを選びます)。
java - GUnitのパーサールールにパラメーターを渡す
パラメーターを取る ANTLR のパーサー ルールがあります。
GUnitでこれのテストを書くにはどうすればよいですか?
パラメータがないため、レクサールールのテストを正常に作成できました。次のように書くと、「java.lang.NoSuchMethodException: mypackage.BlazonParser.tincture()」が発生します。
このページ以外に GUnit に関するドキュメントはほとんどありませんが、これについては触れていません。
antlr - antlr.gunit.Interpのオプションは何ですか?その冗長オプションをオンにする方法は?
私は確かに間違っていますが、antlrのgunitにはユーザーの選択肢がないようです。
特に、冗長オプションをオンにしたいと思います。そうしないと、エラーが発生したときにほとんどわかりません。
詳細/デバッグオプションをオンにする方法を知っていますか?
antlr - シンプルな Antlr3 トークンの解析
Antlr 文法に関する質問の量にいくらか安心していますが (このヤクの形をしたものを剃ろうとしているのは私だけではありません)、私の問題に役立つ質問/回答は見つかりませんでした。
Token/Parser lexer が混在する Antlr3.3 を使用しています。
gUnit を使用して文法を証明し、いくつかの jUnit テストを行っています。ここから楽しみが始まります。
解析したい単純な構成ファイルがあります。
「識別子」(この例では foobar) の解析に問題があります: 許可したい有効な名前は次のとおりです:
などであるため、有効な名前には次の文字を使用できます。'a..z'|'A..Z', '0..9' '_' and '-'
私がたどり着いた文法はこれです(これは完全な文法ではなく、この質問に関連する部分だけであることに注意してください):
および対応する gUnit テスト
gUnit テストの実行は、「5foobar」に対してのみ失敗します。難しいものをなんとか解析できましたが、識別子を解析するという一見単純なタスクに打ちのめされました。
誰かが私が間違っている場所を指摘できますか? 貪欲にならずにマッチングするにはどうすればよいですか?
よろしくお願いします。
- アップデート -
Bartsの回答に従って、文法を次のように変更しました。
IDENTIFIER : ('0'..'9'| 'a'..'z'|'A'..'Z' | '_'|'-') ('_'|'-'|'a'..'z'|'A'..'Z'|'0'..'9')* ;
これにより、失敗したgUnitテストが修正されましたが、「ポート」パラメーターをテストする関連のないjUnitテストが壊れました。次の文法は、上記の構成スニペットの「port=8080」要素を扱います。
私が得るメッセージは次のとおりです。
mismatched input '8080' expecting NUMBER
NUMBER は次のように定義されます。NUMBER : ('0'..'9')+ ;
IDENTIFIER ブロックの上に NUMBER のルールを移動して、この問題を修正しました。
antlr3 - 決定は、複数の選択肢を使用して、「{'A'..'Z', '_', 'a'..'z'}」などの入力と一致させることができます: 1、3
私はこの antlr 3.5 の初心者です。左再帰が ant;r 4.0 では受け入れられ、3.5 では受け入れられないことを理解しました。文法に対してあいまいなエラー警告が表示されます。この文法を使用してメールを確認しているだけです。誰かがこの文法を修正できますか
c++ - 例外後のクリーンアップ Google c++ テスト フレームワーク
私は Google 単体テスト フレームワーク (フィクスチャ) を使用して C++ 単体テストを使用しています。テスト後のクリーンアップは私にとって非常に重要です。ただし、例外が発生した場合、実行可能ファイルはクラッシュし、クリーンアップは行われません。例外が発生した場合でもクリーンアップを強制する方法はありますか?