3

Visual Studio 2012 のテスト エクスプローラーには、Specflow 機能の並べ替え機能がないようです。テストが特定の順序で実行されるようにするための回避策を持っている/知っている人はいますか (テストは実行された結果/アクションの影響を受ける可能性があるため) (a)以前のテストで)?

Visual Studio 2012 で利用できる 'Ordered Test' 機能は、Specflow 機能では利用できないようです。作成できる .orderedtest ファイルは、SpecFlow 機能を使用可能なテストとして認識しません。

4

2 に答える 2

3

私が個人的に注文された単体テストはコードの匂いだと思う前に、この問題を抱えていました。理論的には、各テストは、その実行の外部で作成された状態に依存するべきではありません。

このように考えてみてください。依存関係をモックした通常の単体テストを作成している場合、SUT を呼び出す前に、必要なものはすべてテスト メソッドで作成されます。テスト スケールをロールアップするとき、はるかに大きな SUT を呼び出す前に、物事が正しい状態にあることを確認する必要があります。統合またはシステム テストのために、テスト パックが作成されてフィードの準備が整い、データベースがクリーンアップされて新しい入力の準備が整い、手動テスターでさえテスト対象のスクリプトが提供されます。

SpecFlow レベルでテストを検討する場合、同じことがGiven必要Whenです。

ただし、個人的には、次のような統合レベルのシナリオがいくつかあります。

Given ...
And ...
When ...
Then ...
When ...
Then ...
Given ...
When ...
Then ...
And ...

いくつかの点で、これらは順序付けられたテストと同義です。最終的にWhenは、以前Whenのすべての が正しく完了している必要があります。そのため、これは、 Each test should only fail for one reasonを含むUnit Testingのいくつかの原則を破っていますが、低レベルの単体テスト ハンドルがコードの問題の指標を提供するため、個人的にはこれで問題ありません。

于 2013-10-01T10:51:46.597 に答える
1

「並べる」にはさまざまな方法があります。テスト エクスプローラーでグループ化機能を使用して、プレイリストを作成できます(テストをマーク -> 右クリック -> プレイリストに追加)。私が知る限り (しかし今までは使用されていませんでした) 、 Ordered Testsはテストを並べ替える方法でもあります。

于 2013-10-01T04:57:12.067 に答える