2016-06-30 4 views
-1

Visual Studioソリューションには、1つの共有ライブラリプロジェクト、1つのユニットテストプロジェクト(主にSelenium WebDriverテスト)、および1つのコード化UIテストプロジェクト(3つのプロジェクトがあります。私の単体テストとUIテストを1つのプロジェクトにコード化しました。私はGlobals.Statusと呼ばれる共有ライブラリプロジェクトに静的なプロパティを持つ静的クラスを持っています。異なるテストプロジェクトでのテスト間の静的変数

私はbroswer(Seleniumユニットテスト)とデスクトップアプリケーション(コード化されたUIテスト)の両方で作業が必要なテストケースを1つ持っています。 Selenium単体テストはこの静的Status変数を変更します。コード化されたUIテスト(コード化されたUIプロジェクト内)は、この更新されたStatus変数を読み取る必要があります。これら2つのテストを連続して実行すると、コード化されたUIテストが呼び出されると変数はNULLになります。

共有ライブラリプロジェクトと単体テストプロジェクトの両方を参照するコード化されたUIテストプロジェクトがありますが、明らかにこれでは不十分です。私はこの仕事をするために何をする必要がありますか?

ありがとうございました!

+3

テストは、アクションを実行する他のテストに依存しないように記述する必要があります。スイート内の任意の単一のテストを選択して実行し、正しく動作させることができるはずです。できない場合は、テストスイートのデザインを再考する必要があります。 – Kevin

+0

私はその概念を理解しています。はい、理想的には、私はこれらのテストの両方を1つのテストに組み合わせます。残念なことに、Selenium WebDriverとCoded UIの両方のテストコードを同じプロジェクトに組み込むのは苦労しました。この1つの特定の機能テストでは、Webブラウザ(したがってSelenium)やデスクトップアプリケーション(コード化されたUI)の後のいくつかの作業が必要です。 – AngieM

答えて

1

を:グローバル状態が悪いと、あなたはそれについて何ができる理由は、これまでここで良い話があるのテストを並行し

で実行したい場合は

これは特にトリッキーになりますアプリケーションの外部で(より具体的には、実行アセンブリのメモリ空間の外側で)永続化されているデータで実行されます。

これを実行できる方法はいくつかあります。 AppFabricキャッシュ、Redis、または多分Memcachedに気づくでしょう。

+0

このアドバイスをいただき、ありがとうございます。私は、この値をCUITテストで読むためにテキストファイルに保存しました。 – AngieM

1

あなたのUIテストは新しいAppDomainで実行されると思います。各AppDomainは、すべての静的変数のインスタンスを作成します。あなたは何ができるか

は、新しいクラスにユニットテストコードを移動し、UIテスト


P.S.内のそれを実行することです

テストはグローバルな状態に依存すべきではありません。 さらに、単一のテストは他のテストに依存すべきではありません。あなたはあなたの財産をバックアップする必要が https://www.youtube.com/watch?v=-FRm3VPhseI

+0

AppDomainに関する助言と洞察をいただきありがとうございます。はい、私はそれが理想的なデザインではないことを理解しています。同じテストプロジェクトでSelenium WebDriverとCoded UIライブラリをうまく組み合わせることができなかったので、それらを別々に保つことに頼る必要がありました。私は時間がそれらを1つに結合することを可能にするときに再度試みなければならないかもしれない。 – AngieM

+0

ユニットテストコードを共有ライブラリプロジェクトに移動すると、ライブラリの依存関係への参照を追加せずにUIテストから呼び出すことができます –

関連する問題