Sunday, July 24, 2016

MS Unit Test Data Operation Using Entity Framework

MS Unit Test Data Operation Using Entity Framework

Step :1  - Add Entity

 public class Employee
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int ID { get; set; }

        public string Name { get; set; }
    }

Step 2: Add Context class

public class EmployeeDataContext : DbContext
    {
        public DbSet<Employee> Employee { get; set; }
    }

Step 3 : Enable-Migrations and Add Migration - Update Database

Step 4 : Create Class Library Project and add NUnit from Nuget

Step 5 : MS Unit Test Project

Add Reference EF from nuget and then add Testbase class

using System.Data.Entity.SqlServer;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestEmployeeOperations
{
    public abstract class TestBase
    {
        public void Init()
        {
            var instance = SqlProviderServices.Instance;
        }
    }
}

write a unit test for EF Add employee

namespace UnitTestEmployeeOperations
{
    [TestClass]
    public class UnitTest1
    {
        EmployeeOperation.EmployeeDataContext context;

        public TestContext TestContext { get; set; }

        [TestInitialize]
        public void TestSetup()
        {
            context = new EmployeeOperation.EmployeeDataContext();
           
        }

        //[TestMethod]
       // [DataSource("System.Data.SqlClient", "Data Source=(local);Initial Catalog=EmployeeDB;Integrated Security=True", "Employees", DataAccessMethod.Sequential)]
        [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"E:\TrainingSamples\EmployeeOperation\UnitTestEmployeeOperations\testdata.csv", "testdata#csv", DataAccessMethod.Sequential), DeploymentItem("testdata.csv"), TestMethod]
        public void TestEmployeeInsert()
        {
            //context = new EmployeeOperation.EmployeeDataContext();
            int val = Convert.ToInt32(TestContext.DataRow["ID"]);
            string name = TestContext.DataRow["Name"].ToString();
            context.Employee.Add(new Employee { ID = val, Name = name });
            context.SaveChanges();

            Employee emp = context.Employee.Where(x => x.ID == val && x.Name == name).SingleOrDefault();

            Assert.AreEqual(val, emp.ID);
            Assert.AreEqual(name, emp.Name);

        }

        [TestCleanup]
        public void TestSetup1()
        {
            context = null;
        }
    }

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.