Moq 单元测试的意义
来源:互联网 发布:阿里云做socket服务器 编辑:程序博客网 时间:2024/05/01 20:17
单元测试是开发人员对代码逻辑进行的测试,需要写单元测试代码来实现。单元测试里面是调用函数,根据返回的结果去判断代码逻辑是否正确。通常的操作是CRUD,除了查询之外的操作都是要与数据库打交道的。比如删除记录的函数在单元测试中被调用,记录就会被删掉,而此时开发人员很有可能需要这条记录来测试自己开发的功能是否正确,这样开发和测试就发生了冲突。
单元测试时可以使用MSTEST,通过PowerShell的脚本调用来跑的,很多团队使用自动化脚本来跑测试收集结果。数据库里的数据时刻都在变化,对于开发是很不利的,有没有一种机制能够把开发和测试分开呢,让做单元测试的时候不影响数据库。
Moq就是这样一种机制。Moq需要一个虚拟化对象,所以,被测试的实例需要继承一个接口或者抽象类。
接口(ISqlHelper):
public interface ISqlHelper{ int Insert();}类(SqlHelper)
public class SqlHelper : ISqlHelper { public int Insert() { string connstr = @"data source=fuhui-pc\sqlexpress;Initial Catalog=WSCLMBPM;Integrated Security=True;"; string sql = "insert into UserInfo values('wyy','1234','wyy@wicresoft.com','120');"; SqlConnection conn = new SqlConnection(connstr); int result = 0; try { if(conn.State == ConnectionState.Closed) conn.Open(); SqlCommand cmd = new SqlCommand { CommandType = CommandType.Text, Connection = conn, CommandText = sql }; result = cmd.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine(ex.Message); throw; } finally { if (conn.State == ConnectionState.Open) conn.Close(); } return result; } }单元测试:
[TestClass] public class UnitTest1 { private int result = 1; [TestMethod] public void TestMethod1() { var sqlHelperMock = new Mock<ISqlHelper>(); sqlHelperMock.Setup(x => x.Insert()).Returns(1); Assert.AreEqual(result, sqlHelperMock.Object.Insert()); sqlHelperMock.VerifyAll(); } }测试结果:
这时候我们发现数据库中并没有真正插入数据,但是单元测试已经通过了。
0 0
- Moq 单元测试的意义
- 单元测试之moq
- 单元测试—Moq框架
- moq单元测试方法大全
- 使用Moq实现单元测试
- 使用Moq修改默认的ASP.NET MVC项目单元测试
- 使用Moq修改默认的ASP.NET MVC项目单元测试
- 自动化单元测试的意义
- 单元测试的意义
- 单元测试的意义
- 单元测试的意义
- 如何使用MOQ进行单元测试
- 如何使用MOQ进行单元测试
- asp.net mvc3 对HttPost来的表单使用moq进行单元测试
- 单元测试——Moq框架下的Mock简介及简单实例
- 使用Moq让单元测试变得更简单
- Moq插件的用法
- 浅谈单元测试之(一):单元测试的意义
- linux C程序中获取shell脚本输出(如获取system命令输出)
- jdk命令积累
- 自适应网页设计是怎么做到的的相关知识点总结
- Android View的绘制过程
- mysql:innodb表创建失败解决方案及更改数据库目录方法
- Moq 单元测试的意义
- 使用Ambari快速部署Hadoop大数据环境
- 不番茄下载cyanogenmod源码
- 解决IE不支持position:fixed问题
- EL表达式使用及使用时需要的jar包
- STM32F429之LTDC驱动图解
- 从30岁到35岁:为你的生命多积累一些厚度
- JPEG文件格式简单分析
- IE6常见bug