1

私は、NUnit3.0 テスト フレームワークを使用して C# で Selenium に取り組んでいBaseSetupます。OneTimeSetupOneTimeTearDown

このクラスをすべてのテスト クラスで親クラスとして使用していますが、OneTimeTearDownメソッドで問題が発生しています。このOneTimeTearDownメソッドは、最初のテスト クラスのすべてのテスト メソッドの実行後に実行され、同じ名前空間の他のテスト クラスのテスト メソッドは実行されません。

この問題を解決する方法を提案してください。

4

2 に答える 2

1

また、 https://groups.google.com/forum/#!topic/nunit-discuss /BHlItmdYwB4 で質問と回答がありました

簡単な答え: TestFixtures は SetUpFixtures から継承することは想定されていません。

于 2016-02-15T16:35:42.193 に答える
1

ありがとうございます

読者のさらなる参考のために、私が直面していたこの問題を克服するために私がしたことをここに投稿します。

意図したこと: SetUpFixture クラスを作成し、TestFixture を含むすべてのテスト クラスで使用するドライバーとその他のコンポーネントを初期化しました。それを達成するために私が従った方法は、すべてのテストクラスで SetUpFixture クラスを継承して同じドライバーと他のコンポーネントを使用することでした。これにより、新しいテストクラスを追加するたびに作成して初期化する必要がなくなりました。

問題: SetUpFixture クラスの OneTimeTearDown がいずれかのテスト クラスのテスト実行を終了するとすぐに実行を開始したときに問題が発生しましたが、OneTimeSetup はコンポーネントを再度初期化せず、制御が 2 番目のテスト クラス (これも SetUpFixture クラスを継承していました) に渡されました。その中でテスト メソッドを実行しますが、テスト クリーンアップが OneTimeTearDown によって既に処理されているため、2 番目のテスト クラスのテスト メソッドを実行するドライバーのインスタンスがなく、すべてのテスト ケースが失敗し始めました。

解決策:この状況を克服するために私が行ったこと 1. SetUpFixture クラスを個別のクラスとして作成し、他のテスト クラスを継承しませんでした 2. SetupFixture でドライバーとその他の初期化されたコンポーネントを再利用するには、別の方法を選択しました。各テスト クラスでローカル ドライバーを作成し、それを SetUpFixure クラスで作成されたドライバーで初期化しました。3. SetUpFixture クラスにカプセル化されたメソッドがいくつかあるので、これらのメソッドを再利用するために、SetUpFixture クラス名のプレフィックスを付けて呼び出しを開始しました。

于 2016-02-16T10:15:35.693 に答える