問題タブ [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.
java - TestWatcher からテストをスキップする
私が取り組んでいるプロジェクトは現在 JUnit 4.10 を使用しており、4.12 にアップグレードして、最後の 2 つのバージョンで導入されたいくつかの機能を利用しようとしています。
ただし、TestWatcher は変更され、ライフサイクル メソッド (starting、finished など) からスローされたすべての例外をキャッチするようになりました。リモートでログを記録しているウォッチャーがあるため、これはいくつかの問題を引き起こしているため、何らかの理由でサーバーがダウンした場合、テストを失敗させるのではなく、スキップできるようにしたいと考えています。
これまでのところ、IOException をキャッチし、AssumptionViolatedException として再スローしたため、テストはスキップされます。新しいウォッチャーを使用すると、例外がキャッチされ、テストが正常に実行され、最後に失敗します。これは、ウォッチャーのエラー リストが空ではないためです。
それを回避する方法はありますか?独自のルールを作成する必要がありますか?
junit4 - Junit TestRule はフィールドとメソッドに注釈を付けます
TestRule (TemporaryFolder など) が定義されていると仮定すると、次のいずれかの方法でテスト クラスにルールを適用できます。
1. @Rule でメソッドにアノテーションを付ける
2. @Rule でフィールドにアノテーションを付ける
すべてのテスト ケースが両方の形式でTemporaryFolderコンストラクターを呼び出すようです。各フォームの長所と短所は何ですか?
java - 相互の依存関係を持つ JUnit ルールの集約
より複雑な単体テストでは、多くの場合、特定のルール セットが存在する必要があります。これらのルールの一部には、別のルールへの依存関係があります。順序が関係するので、そのために RuleChains を使用します。これまでのところすべて順調です。
ただし、これはほとんどのテストで繰り返されます (追加のルールが使用されることもあります)。この重複は不要であり、繰り返すのが面倒であるだけでなく、追加のルールを統合する必要がある場合、多くの場所で調整する必要があります。
私が持ちたいのはRule of Rules、つまり、他の (アプリケーションとテスト固有の) ルールを含むか集約する (定義済みの) ルールです。
これが現在どのように見えるかの例を示します。
与えられたルールが相互に依存していると仮定します。例えば、ApplicationSpecificRule は、接続を確立するために DatabaseConnectionRule が最初に実行されることを要求し、ConfigurationRule は空の構成を初期化しているなどです。また、この (かなり複雑なテスト) では、すべてのルールが実際に必要です。
これまでに思いついた唯一の解決策は、定義済みの RuleChain を返すファクトリ メソッドを作成することです。
テストでは、これを次のように使用できます。
これにより、重複が解消され、追加のルールを簡単に統合できます。その RuleChain にテスト固有のルールを追加することもできます。ApplicationSpecificRule
ただし、追加のセットアップに必要な場合は、含まれているルールにアクセスできません (ドメイン オブジェクトを作成するためにが必要であると仮定します)。
理想的には、これを拡張して、ルールadvandancedSet
の上に構築されるなど、他の定義済みセットの使用もサポートするようにします。basicSet
これはどういうわけか単純化できますか?そもそもそれは良い考えですか、それともルールを誤用しているのでしょうか? テストを再構築するのに役立ちますか? 考え?
java - テストのために @Before をスキップ || TestRule で @Before メソッドを実行する方法はありますか?
高レベル、私は非常に簡単な JUnit テスト クラスを持っています。いくつかの @Tests と、いくつかのセットアップを行う単一の @Before があります。1 つのテスト ケースでは、セットアップが異なります (実行したくありません)。
いくつかの検索から、https://stackoverflow.com/a/13017452/413254を見つけました。これは、特定のアノテーションをチェックして @Before ステートメントを実行する @Rule を作成することを提案します。
私の混乱は、ルールで @Before メソッドを実行する方法に関するものです。それを行う方法はありますか?または、テスト クラス自体を渡して @before メソッドを実行する必要がありsetup()
ますか (以下の例)。
関連するテスト コード:
android - デバイスの種類に基づいて Android テストを抑制しますか?
接続されているすべてのデバイスでテストを実行する Gradle 'connectedCheck' を使用して、インストルメンテーション テスト スイートを実行します。一部のテストは特定のデバイスでのみ失敗し、そのデバイスに対してのみそれらのテストを抑制/無視するメカニズムが必要です。
誰かがそれを行うための最良の方法を教えてもらえますか? 私はJUnitテストルールを調べていますが、Androidがより簡単な方法で達成するためのAPIを提供しているかどうか疑問に思っています.
java - TestRule の @Before メソッドが呼び出されない
JUnit 4 TestRule
( を拡張)を実装し、テスト クラスExternalResource
に として注入しました@ClassRule
。このクラスのすべてのテストでリソースを一度だけ初期化し、最終的に破棄したいと考えています。
私の問題は、私のメソッド@Before
と@After
ルールメソッドが私のメソッドの前後にまったく呼び出されない@Test
ことです.なぜこれが起こっているのですか?
最小限のコンパイル可能な例:
ここで私が誤解していることはありますか?非静的でも同じことが起こることに注意してください@Rule
。
JUnit 4.11を使用しています。
ヒントをありがとうございました。
junit4 - カスタムルールから現在の JUnitParams パラメータを見つけることは可能ですか?
JUnitParams を使用してパラメーター化されたテストを記述し始めましたが、すばらしい動作をします。たとえば、次のテストは で呼び出されfalse
、次に で呼び出されtrue
ます。
ちょっとした問題の 1 つは、org.junit.rules.TestRule
いくつかの追加情報をログに書き込むためだけに存在するカスタム ルール (のように) があることです。現在行っていることは、
上記のように 2 つのパラメーターしかない場合、1 つのメソッドの 2 つの実行に対して同じ名前が書き込まれることは問題ではありません。単純に数えることができます。ただし、ルールがパラメーター値を出力することは、特にもっとある場合に役立ちます。
では、カスタム ルール内からテスト パラメーターを見つけることは可能ですか?
android - テスト中に oncreate が呼び出される前にアクティビティ参照を取得する方法
onCreate が呼び出される前に Activity の参照を取得する方法。テスト中です。JUnit ルールとして ActivityTestRule を使用します。この要件の理由は、テストからアクティビティにモックを挿入したいからです。