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