如何对数据库操作类进行单元测试

crystal_lz 2014-10-30 11:22:59
假设我有一个DBTest数据库操作类
里面有Add(DBTestModel), Update(DBTestModel) DeleteById(int) GetAll() 四个方法 如何为这四个方法写单元测试
Add到好处理可以直接

[TestMethod()]
public void AddTest(){
DBTest db = new DBTest();
int row = db.Add(new DBTestModel);
Assert.AreEqule(row,1);
}

[TestMethod()]
public void DeleteByIdTest(){
int id = ????//id是数据库里面已有的id啊 而且这个ID也不是自己插入的时候能控制的 自增的啊
//当然这个id可以在插入数据库的时候返回 可是程序里面的Add方法不需要返回的ID啊 只需要知道插入成功就可以了
//需要用ID的时候 都是点击到一个界面上会列出所有 然后操作
DBTest db = new DBTest();
int row = db.DeleteById(id);
Assert.AreEqule(row,1);
}
//Update也需要ID
//还有GetAll是返回数据库所有List<DBTestModel> 我如何知道数据库是否返回所有
//验证返回的List的count是否和数据库条数相等?如果是这样 我也得提前知道数据库条数啊

第一次写测试代码 不知道要怎么处理这些问题、、求教!
...全文
521 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
另外如果对数据库做单元测试,最好弄一个专门的单元测试数据库
  • 打赏
  • 举报
回复
单元测试时可以指定先定条件的,你找下相关的文档就知道了 其实单元测试没规定你必须一个方法对应一个方法,我就做过一个单元测试方法里面把增删改查全部走一次
moonwrite 2014-10-30
  • 打赏
  • 举报
回复
首先数据库是需要一些初始数据的~ 另外每个方法操作后 都要还原数据 [TestMethod] public void S_Service_DeleteUser()//测试删除,那么我可以测试添加 再测试删除 { using (TransactionScope scope = new TransactionScope())//为了不产生数据,这个事务不会提交 { _IService.AddUser(user);//这个user我在外面构造好了 var entity = _IService.GetUserById(user.ID); Assert.IsNotNull(entity); _IService.DeleteUser(user); entity = _IService.GetUserById(user.ID); Assert.IsNull(entity); } }
  • 打赏
  • 举报
回复
接楼上,或者你的测试数据比较好区分。测的时候,增、改、查、删。 单元测试代码中有个地方可以初始化数据和清理数据的:
#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

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧