c#单元测试

来源:互联网 发布:淘宝图片空间怎么上传 编辑:程序博客网 时间:2024/06/07 13:02

数据库单元测试

1.数据库设计

Person:Id(int,主键);UserName;PassWord;Age

2.新建一个项目

2.1.定义Person类

 public class Person
    {
        private int id;
        private string userName;
        private string passWorld;
        private int age;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }


        public string UserName
        {
            get { return userName; }
            set { userName = value; }
        }

        public string PassWorld
        {
            get { return passWorld; }
            set { passWorld = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    }

2.2.定义连接数据库类

 public class Connection
    {
        public static SqlConnection GetConnection()
        {
            string connStr = "server=localhost;uid=sa;pwd=beyond;database=test";
            SqlConnection conn = new SqlConnection(connStr);
            try
            {
                conn.Open();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return conn;
        }
    }

2.3.定义功能函数类DBPerson,起功能函数为增删查改

 public class DBPerson
    {
        public void InsertPerson(Person p)
        {
            string sql = "insert into Person (UserName,PassWord,Age) values (@userName,@passWord,@age)";
            SqlConnection conn = Connection.GetConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@passWord", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@age", SqlDbType.Int));

            cmd.Parameters["@userName"].Value = p.UserName;
            cmd.Parameters["@passWord"].Value = p.PassWorld;
            cmd.Parameters["@age"].Value = p.Age;
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

        public void Updata(Person p)
        {
            string sql = "update Person set UserName=@userName,PassWorld=@passWord,Age=@age where Id=@id";
            SqlConnection conn = Connection.GetConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@passWord", SqlDbType.VarChar));
            cmd.Parameters.Add(new SqlParameter("@age", SqlDbType.Int));
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));

            cmd.Parameters["@userName"].Value = p.UserName;
            cmd.Parameters["@passWord"].Value = p.PassWorld;
            cmd.Parameters["@age"].Value = p.Age;
            cmd.Parameters["@id"].Value = p.Id;
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }
        public Person GetPersonByID(int id)
        {
            string sql = "select * from Person where Id=@id";
            SqlConnection conn = Connection.GetConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));

            cmd.Parameters["@id"].Value = id;
            SqlDataReader reader = cmd.ExecuteReader();

            Person p = null;
            if (reader.Read())
            {
                p = new Person();
                p.Id = id;
                p.UserName = reader["UserName"].ToString();
                p.PassWorld = reader["PassWord"].ToString();
                p.Age = Convert.ToInt32(reader["Age"]);
            }
            reader.Close();
            conn.Close();
            return p;

        }

        public void DeleteById(int id)
        {
            string sql = "delete from Person where Id=@id";
            SqlConnection conn = Connection.GetConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));
            cmd.Parameters["@id"].Value = id;
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }

    }

2.4.定义测试类

[TestFixture]
    public class TestDBPerson
    {
        private DBPerson dbPerson;
       
        [TestFixtureSetUp]
        public void Init()
        {
           dbPerson = new DBPerson();
        }
        [Test]
        public void TestInsert()
        {
            Person p = new Person();
            p.UserName = "beyond";
            p.PassWorld = "123456";
            p.Age = 25;

            dbPerson.InsertPerson(p);

            int maxId = this.GetMaxId();

            p.Id = maxId;

            Person p1 = new Person();
            p1 = dbPerson.GetPersonByID(maxId);

           
        }

        private void Compare(Person p,Person p1)
        {
            Assert.AreEqual(p.Id, p1.Id);
            Assert.AreEqual(p.UserName, p1.UserName);
            Assert.AreEqual(p.PassWorld, p1.PassWorld);
            Assert.AreEqual(p.Age, p1.Age);
        }

        private int GetMaxId()
        {
            string sql = "select max(Id) as maxID from Person";
            SqlConnection conn = Connection.GetConnection();
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader reader = cmd.ExecuteReader();
            int maxId = 0;
            if (reader.Read())
            {
                maxId = Convert.ToInt32(reader["maxID"]);
            }
            reader.Close();
            conn.Close();

            return maxId;
        }
    }