1

私はMSTestを使用しています。最初にすべての単体テスト(または独自のテスト)を実行するときに、テストを追跡するためにdbレコードに入れることができる一意の識別子を作成したいと思います。問題は、すべてのテストで同じ一意の参照を作成して使用したいということです。私が本当に使いたいのはDateTimeスタンプです。常に発生するイベントを探しています。テスト期間中は静的コンテナーに入れて、テスト内からこの静的コンテナーにアクセスできます...これは可能ですか?...

4

2 に答える 2

1

static の保持を担当する別のクラスを持つというルートをたどることができますDateTime

public static class TestIdGenerator
{
    private static readonly Lazy<DateTime> _testId = new Lazy<DateTime>(() => DateTime.Now);
    public static DateTime TestId
    {
        get { return _testId.Value; }
    }
}

テストでは、次の方法でアクセスします

var testId = TestIdGenerator.TestId;

DateTime は、プロパティが初めてTestIdアクセスされたときに設定され、CLR がアンロードされるまで、後続の各アクセスで同じままになります。これは、特定のテスト実行のすべてのテストが完了したときに発生します。

これをテストしたところ、フィクスチャのすべてのテストで一定のままですが、次のテスト実行では異なります。

于 2012-04-11T12:35:19.657 に答える
0

メソッドでAssemblyInitialize属性を使用して、テスト アセンブリ内の他のメソッドよりも先に実行されるようにすることができます。そのメソッドでは、一意の ID を生成し、それを静的変数に設定できます。ただし、テスト メソッドがアセンブリにまたがる場合、これは機能しません。

于 2012-04-11T12:26:10.470 に答える