c# - データベースにアクセスしてエンティティフレームワークデータをテストする

c# asp.net unit-testing entity-framework tdd

実際にデータベースにアクセスして、実際のデータをテストしようとしています。私は実際に私のリポジトリクラスをテストしています。これが私がやっていることの例です。

/// <summary>
/// Summary description for Country
/// </summary>
[TestClass]
public class Country {

    public Country() {
        _countryRepo = new CountryRepository();
    }

    private ICountryRepository _countryRepo;

    [TestMethod]
    public void db_should_return_at_least_one_country_as_approved_all() {

        //Act
        var model = _countryRepo.GetAll();

        //Assert
        Assert.IsTrue(model.Count() >= 1);
    }

    [TestMethod]
    public void db_should_return_at_least_one_country_as_approved_true() { 

        //Act
        var model = _countryRepo.GetAll(ApprovalStatus.Approved);

        //Assert
        Assert.IsTrue(model.Count() >= 1);
    }

    [TestMethod]
    public void db_should_return_Turkey_as_country_name_by_id() {

        //Act
        var model = _countryRepo.GetSingle(1000);

        //Assert
        Assert.AreEqual<string>("Turkey", model.CountryName);

    }

    [TestMethod]
    public void db_should_return_Turkey_as_country_name_by_countryISO3166Code() {

        //Act
        var model = _countryRepo.GetSingle("TR");

        //Assert
        Assert.AreEqual<string>("Turkey", model.CountryName);

    }

    [TestMethod]
    public void db_should_return_Turkey_as_country_name_by_GUID() {

        //Act
        var model = _countryRepo.GetSingle(Guid.Parse("9AF174A6-D0F7-4393-AAAD-B168BADEDB30"));

        //Assert
        Assert.AreEqual<string>("Turkey", model.CountryName);

    }

}


これは私のニーズにはかなりうまくいきますが、私が本で正しくやっているかどうか疑問に思います。ここで私が本当に従うべき他のパターンはありますか?私は自分のデータを偽造したくありません。本当の強烈な点は、DALと実際の本番データをテストすることです。
答え
他の誰か(またはあなたでも)がデータベースにアクセスして、新しい承認国を作成するか、国名を変更すると、テストは失敗します。 「WTHは私のリポジトリに問題があります。なぜ期待どおりに機能しないのですか?」しかし、そうです、問題はリポジトリにありません。

データベースにヒットするテストを作成するときは、DBを作成し、起動時にデフォルト値をロードして、その後すぐに破棄するのが好きです。これが最善の選択肢かどうかはわかりませんが、かなりうまくいきます。このアプローチの問題は、速度が遅く、コーディングする必要があることです。
関連記事

c# - LoadAsyncとMemoryStreamを使用して、データベースから画像ボックスに画像をロードしたい

c# - リピーターをカスタムクラスの配列にバインドする方法[閉まっている]

c# - CSSをasp.net Webアプリケーションに追加する方法

c# - WP7-アニメーションが早すぎて効果が残っていない

c# - richTextbox1からtextbox1?

c# - WPF:IValueConverterからスローされたUIにエラーメッセージを表示する方法

c# - Farseer 3.3有効化されていないボディが有効化された場合に衝突するかどうかのチェック(スポーン)

c# - WCFサービスからSilverlightアプリケーションにDataSetを渡す

c# - System.Drawing.Image.FromFileが存在するファイルを見つけられない

c# - dotnetアセンブリからリソースを取得する