2012-07-11 65 views
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(); 
     } 
     } 
    } 
} 

现在我想对这个方法进行单元测试。

我已经添加了单元测试项目以及添加上述项目的参考它... 但我很困惑如何调用它?

我已经writen下面的代码

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

     [TestMethod] 
     public void AddCar() 
     { 

      SampleDBEntities e = new SampleDBEntities(); 


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

     } 

    } 
} 

我很困惑ABT下一步应该怎么写?

回答

0

感谢您的帮助和支持。我很高兴...... 我曾尝试你的代码,但它仍然给错误...

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

      var cars = new Cars(); 
      //gives error below line 
      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(string brand , string model) 
     { 
      using(var db = new SampleDBEntities()) 
      { 
       var car1 = from car in db.Cars where car.Brand == brand && car.Model == model 
        select car; 
       return car1.FirstOrDefault(); 
      } 
     } 
    } 




} 

错误: Error Image 成员EntityFrameworkExample.cars.AddCar(String,String);不能使用 实例引用进行访问,请使用类型名称对其进行限定。

1

您应该将AddCar方法放在Main方法外部以便能够调用它。我会为Program类以外的Car-functional创建一个新类。然后,您可以调用该课程,而无需在测试中与程序进行交互。

对于单元测试,在您的测试方法中执行“安排”,“行为”,“断言”。

安排:

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(); 
      } 
     } 
    } 
} 
+0

谢谢......但我无法使用汽车我只能用车...如果我用车,那么它会给出错误... – nilesh1foru 2012-07-11 12:48:30

+0

对不起,查看我的更新答案。我打算把汽车当成一个新班级。 – cederlof 2012-07-11 12:57:17