私はほとんどシングルスレッド、シングルユーザーのアプリケーションで作業しています。 ここにはいくつかのワーカースレッドがあり、スレッドセーフなオブジェクトとクラスのみを使用しています。単体テストは実際に複数のスレッド(テスト用に明示的に作成されたもの)を持つものをテストしており、うまくテストされます。MSTestsでユニットテストを順次実行する方法はありますか?
スレッドセーフではないビジネスオブジェクトとサブシステムをテストすると、VSTSユニットテストが失敗します。スレッドセーフではないことは大丈夫です。アプリケーションで使用する方法です。
しかし、MSテストの「TestMethodごとの1つのスレッド」アプローチは私たちを殺します。私は多くの単体テスト・クラスでオブジェクト・ロックを実装しなければなりません。テストが順番に実行されるようにする必要があります(私は実際には順序は気にしませんが、同じオブジェクトに2つのテスト・メソッドを当てることはできません同じ時間)。
コードは次のようになります。
[TestClass]
public class TestSomeObject
{
static object turnStile = new object();
...
[TestMethod]
public void T01_TestThis()
{
lock(turnStile)
{
.. actual test code
}
}
[TestMethod]
public void T02_TestThat()
{
lock(turnStile)
{
-- actual test code
}
}
}
は、テスト実行の順番を作るために、より良い/よりエレガントな方法はありますか?
すべてのテストでいくつかのオブジェクトのインスタンスを再利用しているようですか? – BlackTigerX
はい、本質的です。場合によってはデータベースであることもありますが、時にはシングルトンです - アプリケーションで使用されているように、 –
があなたのタグで* unit-testing *と主張しているので、依存関係、特にスレッドセーフではない依存関係をモック/スタブする必要があります。 – mxmissile