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 方法之外以便能够调用它。我会在 Program 类之外为 Car 功能创建一个新类。然后,您可以调用该类,而无需与测试中的程序进行交互。

对于单元测试,在您的测试方法中执行“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 回答