問題タブ [junit-rule]
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.
junit - JUnit 理論によるテストの追加
ルールを使用して追加のテストを追加する方法はありますか? たとえば、理論ランナーをルールに変換したいのですが、ルールに追加のテストを追加する方法を見つけることができませんでした。
logging - xwiki logrule がログ ステートメントをキャプチャしない
ロガー出力をキャプチャするために XWiki LogRule を使用しようとしています。出力がキャプチャされていません。私が間違っていることは明らかではありません。関連するコードとドキュメントを読みましたが、徹底的な検索を行ったと感じていますが、すべて役に立ちませんでした。このソリューションを選択したのは、目前の問題に対して最もエレガントに見えるためです。
問題の範囲と、Mockito 1.8.5 から 1.9.5 への移行に起因する問題の解決策を特定しようとしています。@InjectMocks を使用すると、以前は final フィールドに挿入できましたが、できなくなりました。その理由は理解できます。
解決策の 1 つは、最終修飾子を削除することです。もう 1 つは、オーバーロードされたコンストラクターを作成し、手動で注入することです。最初はまずいです。2 つ目は、テストのみに使用されるコードが導入されているため見苦しく、ロガーをモックする場合、最終的なフィールドはロガーだけです。したがって、ロガーが唯一の問題である場合は、xwiki-commons-test-simple-5.4.1.jar で利用可能な XWiki LogRule を使用するのが理にかなっていると思いました。
テストクラスでのルールの実装は次のとおりです。
テストでのルールの実行は次のとおりです。
// verify(logger).info(expectedLogEntry); System.out.println("this.logRule.size() is " + this.logRule.size()); System.out.println("this.logRule.toString() is " + this.logRule.toString()); assertThat(this.logRule.size(), is(1)); assertThat(this.logRule.getMessage(0), containsString(expectedLogEntry)); assertThat(this.logRule.toString(), containsString(expectedLogEntry)); }
さまざまなバリエーションを試したことがわかります。logRule.size() の呼び出しは 0 を返し、常に INFO エントリを記録する必要があります。
ターゲット クラスのロガーの定義は次のとおりです。
テスト中のメソッドは次のとおりです。
コンソール出力は次のとおりです。
ご覧のとおり、実際にログに記録されます。また、いくつかの slf4j バインディングの警告があることもわかります。それらが問題であるようには見えませんが、これが投稿され次第、その角度をさらに調査する予定です.
私が求めているのは、LogRule がログに記録された出力をキャプチャするように、この問題を解決するための提案です。
最初の投稿の後、 logback-test.xml をプロジェクトに追加できなかったことに気付きました。そうすることで、テストは以前と同じように失敗しますが、コンソールは異なります。上記のコンソール ログには、その変更が反映されています。
ここに私のlog4j.xmlがあります:
そして、前述の logback-test.xml は次のとおりです。
java - インターフェイス内に JUnit ルールを作成することは可能ですか?
JUnit を使用してテスト自動化スイートを作成しようとしています。すべてのテストについて、ルールを作成したいと思います。このために、インターフェイスを作成し、その中にルールを配置しました。実行したいテストはすべて、そのインターフェースを実装する必要があります。コンパイラ エラーはスローされませんでしたが、私の Test クラスがそのインターフェイスを実装すると、これは機能しないようです。以下は私が作成したインターフェースです。
または、上記をクラスとして作成し、そのクラスからすべてのテスト クラスを拡張することもできました。それを試してみたところ、完全に機能しましたが、他のクラスからテスト メソッドを拡張できなくなりました。
基本クラスから拡張せずに、すべてのテストに適用できるルールを作成する方法はありますか?
java - JUnitParams で PowerMock を実行できない
JUnitParams で PowerMock を使用しようとしていますが、次の奇妙なエラーが発生します。
私のテストクラスは次のとおりです。
これらはmavenの依存関係です:
この投稿によると、別の JUnit のランナーで PowerMock を使用できます。しかし、なぜこれが起こっているのか分かりません。ここで何が間違っていましたか?