問題タブ [junit-runner]
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.
java - What is the logic of @Rule(JUnit) declaration and assignment in a Groovy class
Trying some variants of rules creation in a groovy file, I have come to the thought, that @Rule doesn't describe DECLARATION, but ASSIGNMENT. So, the runner, when loading the test, tries every rule for the correct assignment.
But, then I came to some paradoxial variants:
What is the logic of it?
It seems as a bug in Runner - the runner makes an excessive check before constructing the test.
java - JUnit テストでスタティック ライブラリ クラスをプロキシするカスタム ClassLoader
質問
custom をClassLoader
使用して、静的コンテキストから適切に利用されるクラスの実装を提供することは可能ですか?
背景
私は、静的クラスを使用して依存関係を結び付けることを推奨するフレームワークを使用しています。
それはこのように動作します..
ご想像のとおり、これをテストするのは悪夢であり、JUnit からは不可能なアクティブなフレームワーク環境内から呼び出されない限りFrameworkProvidedDependencyResolver
(実際の名前ではありません) をスローします。NullPointerException
私がやりたいClassLoader
ことは、JUnit テストで使用できるカスタムを提供して、FrameworkProvidedDependencyResolver
モックの依存関係などを結び付けるカスタムを提供することです。
わかりましたので、ユニットテストを次のように表示したいと思います。
MyTestRunner
カスタムを使用することを選択した場所ClassLoader
です..
@AutomatedMikeに感謝します。
わかりましたので、テストのためにカスタムの依存関係リゾルバーとMyClassLoader
交換する機会を得ることができるミックスに滑り込みます..FrameworkProvidedDependencyResolver
これで、フレームワークによって提供されるものではなく、カスタムをロードできるようFrameworkProvidedDependencyResolver
になりました..しかし、どうすればそれを行うことができますか?
「FrameworkProvidedDependencyResolver」のリクエストを無視して、別のクラス、たとえば「MyMockFrameworkProvidedDependencyResolver」を返すことができます。それは問題ありませんが、静的コンテキストから をMyClass.initialize
呼び出すと、 . 理にかなっています。FrameworkProvidedDependencyResolver
NoClassDefFoundError
MyMockFrameworkProvidedDependencyResolver
本物と同じ名前FrameworkProvidedDependencyResolver
を付けて、別のパッケージに入れることができます(例:i.hate.my.framework.FrameworkProvidedDependencyResolver
)。MyClass
は実際FrameworkProvidedDependencyResolver
のパッケージ、およびすべてを具体的に見ているため、これも機能しません。
クラスに実際の名前を付けてFrameworkProvidedDependencyResolver
、フレームワークが提供するものと同じパッケージに入れることができます..しかし、今ではClassLoader
. JVMは2つによって混同され、クラスパスによって適切な方がロードされます。おそらく私のものです。ここでの問題は、これがすべてのテストに適用されるようになったことです。私が探している解決策ではありません。
最後に、 は ではないため使用できProxy
ませFrameworkProvidedDependencyResolver
んinterface
。
わかりました、私の質問をもう一度言います:静的コンテキストから適切に利用される
custom を使用して、クラスの実装を提供することは可能ですか? ClassLoader
おそらく、一意の名前を持つ独自の一意のパスにクラスを作成し、それをロードするときに編集して、上書きしようとしている予想されるパスと名前で JVM に表示されるようにすることはできますか? もちろん、他のソリューションも大歓迎です。
java - 複数の JUnit テスト クラスのセットアップ ステップの追加
プロジェクトには、それぞれが複数のテスト メソッドを含む複数のテスト クラスがあります。これらの各テスト クラスを実行する前に、データベース接続を作成したいとします。個々のテスト クラス、複数のテスト クラス、またはテスト スイートを実行するかどうかに関係なく、接続を確立する必要があります。最も重要なことは、複数のテスト クラスの場合、このステップを何度も呼び出すべきではないということです。実行しているテスト クラスの数に関係なく、接続は 1 回だけ行う必要があります。
この問題に取り組むための設計や JUnit のヒントを提案していただけますか?
java - JUnit "Run as-> JUnit" と "Cover as -> Junit" の動作が異なるのはなぜですか?
JUnitテストがあります。しかし、「Run as -> JUnit」を使用すると成功しますが、「Cover as -> JUnit」を使用すると失敗します。何故ですか?コードには確かに問題があります。コードでは、大きすぎるメソッド (64KB 以上) を含むレガシー コード (変更するアクセス権がありません) を使用しています。「Run as -> JUnit」がこの問題を明らかにできないのはなぜですか?
junit - テストランナーから JUnit テスト結果を取得するには?
オーバーライドされた runChild() メソッドを使用して、独自のテスト ランナーを実装しました。
テスト ケースの実行前後にグローバルな事前アクションと事後アクションを実行する必要があるため、このメソッドをオーバーライドします。事後アクションは、テスト ケース実行の失敗/成功に依存します。実行結果を取得するにはどうすればよいですか?