1

初めて単体テストを使用しています。

エンティティ フレームワークを使用してクラス「CAR」を作成しました。私のプロジェクトには次のコードがあります

namespace EntityFrameworkExample
{
    class Program
    {
        static void Main(string[] args)
        {

          public static void AddCar()
          {

            SampleDBEntities db = new SampleDBEntities();
            Car car = new Car();
            car.Brand = "Ford";
            car.Model = "Mastang";
            db.Cars.AddObject(car);
            db.SaveChanges();
            Console.WriteLine("Record Saved");
            Console.ReadLine();
         }
      }
  } 
}

次に、このメソッドで単体テストを実行したいと思います。

単体テストプロジェクトを追加し、上記のプロジェクトの参照を追加しました...しかし、それを呼び出す方法について混乱していますか?

以下のコードを書きました

namespace UnitTest
{
    /// <summary>
    /// Summary description for UnitTest1
    /// </summary>
    [TestClass]
    public class UnitTest1
    {

        [TestMethod]
        public void AddCar()
        {

            SampleDBEntities e = new SampleDBEntities();


            //what to do next ? ////////////////////////////////

      }

    }
}

次のステップで何を書けばいいのか混乱しています。

4

1 に答える 1

1

AddCar メソッドを呼び出せるようにするには、Main メソッドの外に配置する必要があります。プログラムクラスの外に、車の機能用の新しいクラスを作成します。その後、テストでプログラムを操作することなく、そのクラスを呼び出すことができます。

単体テストの場合は、テスト メソッド内で「Arrange」、「Act」、「Assert」を実行します。

整える:

var cars = new Cars();

活動:

cars.AddCar("Ford", "Mustang");

主張する:

//check that car is in the database
var myCar = cars.GetCar("Ford", "Mustang");
Assert.IsNotNull(myCar);

テストできるようにするには、各テストを実行する前にデータベースを消去する必要があります。

明確にするために編集:

namespace EntityFrameworkExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var cars = new Cars();
            cars.AddCar("Ford", "Mustang");
        }

    } 

    public class Cars
    {
        public static void AddCar(string brand, string model)
        {
            SampleDBEntities db = new SampleDBEntities();
            Car car = new Car();
            car.Brand = brand;
            car.Model = model;
            db.Cars.AddObject(car);
            db.SaveChanges();
            Console.WriteLine("Record Saved");
            Console.ReadLine();
        }

        public static Car GetCar(brand, model)
        {
            using(var db = new SampleDBEntities())
            {
                var car = from car in db.Cars
                    where car.Brand == brand
                        && car.Model == model
                    select car;
                return car.FirstOrDefault();
            }
        }
    }
}
于 2012-07-11T12:26:49.447 に答える