2012-07-11 98 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