Fork me on GitHub

Asp.Net MVC3中如何进行单元测试?

下面我们就以一个示例演示一下如何进行单元测试?

      public Model.UserInfo UpdateEntity(Model.UserInfo entity)
        {
            db.UserInfo.Attach(entity);
            db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
            return entity;
        }


针对以上方法我们做一个单元测试:

 1.鼠标放在方法名上,右键选择创建单元测试如图:

  弹出窗口,我们会看到勾选的复选框就是我们所要进行测试的方法:

  

  直接点击确定就会在解决方案中为我们自动生成一个测试的项目,UnitTest文件夹是本人自己加的,可能还没有App.Config,我们只需要把实体模型中的App.Config文件拷贝到测                  试项目中就OK: 

2.具体实现测试的代码如下:

using System.Linq;
using Acmeway.DAL;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using Acmeway.Model;

namespace Acmeway.UnitTest
{
    /// <summary>
    ///这是 UserInfoRepositoryTest 的测试类,旨在
    ///包含所有 UserInfoRepositoryTest 单元测试
    ///</summary>
    [TestClass()]
    public class UserInfoRepositoryTest
    {


        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文,上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        // 
        //编写测试时,还可使用以下特性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion
  [TestMethod]
        public void UpdateEntityTest()
        {
            UserInfo userInfo = new UserInfo()
                {
                    UserName = "卓越",
                    LoginCode = "zy",
                    PassWord = "123",
                    ModfiedDate = DateTime.Now,
                    SubTime = DateTime.Now,
                    Remark = "追求卓越",
                    Email = "email@qq.com",
                    UserStatus = 1,
                    DelFlag = 0
                };
            UserInfoRepository target = new UserInfoRepository();
            var updateUser = target.AddEntity(userInfo);
            Assert.AreEqual(true, userInfo.ID > 0);

            UserInfoRepository target2 = new UserInfoRepository();
            UserInfo user = new UserInfo();
            user.ID = userInfo.ID;
            user.UserName = "余光";
            user.Remark = "迁梦余光";
            user.LoginCode = userInfo.LoginCode;
            user.ModfiedDate = userInfo.ModfiedDate;
            user.SubTime = userInfo.SubTime;
            user.DelFlag = 1;
            user.PassWord = "123";
            user.UserStatus = 0;
            user.Email = "email@qq.com";

            target2.UpdateEntity(user);
            var temp = target2.LoadEntities(u => u.ID == user.ID).FirstOrDefault<UserInfo>();
            Assert.AreEqual(user.UserName,temp.UserName);
        }
    }
}

3.在将要进行测试的方法体中右键——>运行测试,就开始了测试,具体测试结果是否通过,会在测试结果窗口给出提示。

posted @ 2013-07-30 15:08  迁梦余光  阅读(252)  评论(0编辑  收藏  举报