問題タブ [parameterized-tests]
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.
nunit - 現在のテストのパラメーターにアクセスする方法はありますか (パラメーター自体は別として)?
[TestCaseSource]
またはのようなものを使用してパラメーター化された NUnit テストを作成すると[ValueSource]
、NUnit はパラメーターをテスト メソッドに直接渡します。しかし、これらのパラメーターにアクセスする他の方法はありますか?たとえば、ヘルパーメソッドからSetUp
、またはヘルパーメソッドから (パラメーター値をそのヘルパーメソッドに明示的に渡す必要はありません)?
たとえば、3 つの異なるシナリオ (「上昇率」、「下降率」、「一定率」など) があるとします。特定の計算のテストを書いていますが、いくつかのテストは 3 つのシナリオすべてで同じ動作をします。その他は 3 つのうちの 2 つです (もう 1 つのシナリオについては、2 つ目のテストを作成します)。他の人は、シナリオごとに個別のテストを行います。パラメータ化されたテストは、これをモデル化するための良い方法のようです。シナリオごとに戦略オブジェクトを記述し、各テストが適用されるシナリオに基づいてテストをパラメーター化できます。
私はこのようなことができます:
これの欠点はInitializeScenario
、すべてのテストで呼び出すことを覚えておく必要があることです。これは混乱しやすく、テストを読みにくくします。このテストがどのシナリオに適用されるかを正確に示す属性に加えて、テストを乱雑にする追加のコード行も必要です。 、シナリオがあります。
テストパラメータにアクセスできる他の方法はありますか? TestContext
たとえば、SetUp
メソッドからテストのパラメーターにアクセスできるようにする静的プロパティはありますか?
(TestContext
有望に見えましたが、テストの名前と、それが成功したか失敗したかだけを教えてくれます。テストのパラメーターは、実際のオブジェクトとしてではなく、表示文字列の一部としてのみ表示されます。戦略オブジェクトを取得できず、その上でメソッドの呼び出しを開始します。)
eclipse - Eclipse でパラメーター化された Groovy JUnit テストケース
Parameterized
Eclipse で Groovy JUnit テスト ケースを実行できません (テスト コードと環境の詳細については、以下を参照してください)。
症状
- Package Explorer でクラスを右クリックしてRun As -> JUnit Test Caseを実行すると、「JUnit テストが見つかりません」というダイアログが表示されます。
- プロジェクトを右クリックしてRun As -> JUnit Test Caseを実行すると、パラメーター化された Groovy以外のすべてのテストケースが実行されます。
私が試したこと
- 「通常の」Groovy JUnit テスト ケースが確実に実行されるようにします。 これは機能します。
- パラメータ化された Java テスト ケースが確実に実行されるようにします。 これは機能します。
- このテスト ケースの JUnit 実行構成を手動で作成します。 これは機能します。
そう
したがって、不便な回避策があります(3)。ただし、プロジェクト内のすべてのテスト ケースを実行しても、このテスト ケースはまだ含まれないため、これはスケーラブルではありません。
Eclipse/Groovy プラグイン/JUnit にテスト ケースを自動的に認識させる方法はありますか?
テストケースコード
環境
- Eclipse ジュノ サービス リリース 2 (OSX)
- Groovy-Eclipse 2.8.0
- JUnit 4.10.0
java - JUnit サブクラス テストが @BeforeClass メソッドをオーバーライドすることを強制する
私は、JUnit 抽象テストとして書かれた軽量のテスト フレームワークに相当するものを持っています。私がやりたいことは、実装するサブクラスにそれぞれカスタム テスト クラスのセットアップを定義させることです。私の計画は@BeforeClass
、各サブクラスが強制的に定義する抽象設定メソッドを呼び出すメソッドを抽象スーパークラスに定義させることでしたが、@BeforeClass
メソッドは静的でなければならず、静的メソッドを抽象にすることもインスタンスメソッドを呼び出すこともできないため、これは失敗します。
ドキュメントに必要なものを含めるか、 をスローすることによって、サブクラスがセットアップを行うと仮定することIllegalStateException
もできますが、いくつかの理由から、インターフェイス レベルでこれを強制できるようにしたいと考えています。誰でもこれを回避する方法を考えられますか?
ちなみに、これらのテストをパラメーター化する際にも同じ問題がありました (サブクラスはパラメーターを定義しますが、@Parameters
注釈付きのメソッドは静的でなければなりません)。メソッドレベルのパラメーターを許可するサードパーティの JUnitParams ランナーを実行することで、これを回避しました。ここで確認してください: https://github.com/Pragmatists/JUnitParams
python - pytest parameterize - テストケースとしての CSV からの行
CSV ファイルを読み取る必要があり、各行の組み合わせごとにいくつかのメソッドを実行する必要があります。各行をテスト ケースとして表示したいと思います。行をパラメーターとして送信することは可能ですか? pytest はテスト ケースをパラメーター化しますか? その方法を教えてください。
擬似コードは次のとおりです。
ドキュメントを読んでみましpytest
たが、明確ではありませんでした。
これは、行のgenerate_testsフックをパラメーターとして使用するために私が行っていることです。内側のforループ関数に対して同じことを行う方法を知りたいです-この内側のループもテストケースとして収集する必要があります
ここで、test_method2 を呼び出す -for ループのレポートを生成する必要があります (これは、csv ファイルの各行の列にある要素のリストのパラメーター化されたメソッドです)。Pytest はそれらもテストケースとして収集する必要があります。
ご協力ありがとうございます。
unit-testing - JUnit / TestNG は、同じパラメータを持つすべてのテストの前に @BeforeXXX メソッドを実行します
次の問題があります。
パラメータ化されたテストがあります
- パラメータのリストがあります
- いくつかのテスト方法があります
- テストメソッドはパラメータごとに設定する必要があります
より詳細な:
- リスト内の各ファイルについて [...]
- ファイルを db の複数のテーブルに解析する - [setUp]
- テーブルからデータを読み取る - [setUp]
- 個別のテストで各テーブルのデータをテストする - [テスト]
この順番でsetUpメソッドとテストを実行したい
パラメータの初期化
最初のパラメータ
- 最初のパラメーターで setUp メソッドを実行する
- 最初のパラメーターですべてのテスト メソッドを実行する
- 2 番目のパラメーターの場合
- 2 番目のパラメーターで setUp メソッドを実行する
- 2 番目のパラメーターですべてのテスト メソッドを実行する
- ...
これを行うためにJUnitとTestNGを試しましたが、解決策が見つかりませんでした。やり方わかる方いたら教えていただきたいです。
JUnit でこれに対する回避策を見つけました。setUp とすべてのテストを 1 つのテスト メソッドに配置し、ErrorCollector を使用してすべてのチェックが実行されるようにします。しかし、この方法のレポートはあまり明確ではないため、私はそれが好きではありません。
java - パラメータ化された JUnit テストに文字列値のリストを渡す
文字列値のコレクションをプロパティ ファイルからパラメーター化された JUnit テストに渡そうとしています。Properties.values() は Collection を返しますが、JUnit ではパラメーターを Collection 構造で渡す必要があります。
Collection<Object> to Collection<Object[]>
それは、各配列が実際には単一の項目であるを変換する必要があるということですか?
私はこれを試しました:
しかし、これはすべての値を 1 つのオブジェクトにまとめて、期待どおりにコレクションを作成しません。誰か助けてくれませんか?
f# - f# のパラメーター化されたテスト - これは有効な定数式ではありません
なんらかの理由で、属性を介してテストに引数を渡すとTestCase
、最初の引数 (この場合は配列) に関する次のエラー メッセージが表示されます。
これは有効な定数式またはカスタム属性値ではありません
しかし、属性とメソッド自体の両方から最後の引数を削除すると、すべて正常に機能します。
私は何を間違っていますか?できればタプルも定義したいのですint * int
が、どちらもうまくいかないようです。