加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

单元测试 – 单元测试 – 不能从理论转向实践

发布时间:2020-12-16 03:36:42 所属栏目:asp.Net 来源:网络整理
导读:似乎我遇到的每个单元测试示例都非常明显和罐装.像断言x 3 == 8等等.我只是很难看到我如何单元测试现实世界的东西,比如SQL查询,或者用于表单验证的regEx实际上是否正常工作. 例证:我正在开发两个由DB驱动的ASP.NET MVC 2站点.我为每个人都有一个测试单元解
似乎我遇到的每个单元测试示例都非常明显和罐装.像断言x 3 == 8等等.我只是很难看到我如何单元测试现实世界的东西,比如SQL查询,或者用于表单验证的regEx实际上是否正常工作.

例证:我正在开发两个由DB驱动的ASP.NET MVC 2站点.我为每个人都有一个测试单元解决方案,但不知道哪种测试会有用.该站点将完成的大部分工作是向数据库写入数据,或从数据库中检索和组织数据.我只是测试各种查询是否成功访问了数据库?我如何测试正确性(例如,数据被写入正确的字段,或正确检索的数据)?

我只是很难将我自己的非正式测试和调试方式转换为更正式的断言(x)类测试.

解决方法

首先,问问自己“为什么单元测试难以为我的真实代码编写?”也许答案是你的真实代码做得太多了.如果你有一个代码模块充满了“新”语句和“if”语句和“switch”语句以及聪明的数学语句和数据库访问,那么编写一个测试会很痛苦,更不用说充分测试逻辑了数学.但是如果你将“新”语句拉出到工厂方法中,你可以轻松地提供模拟对象来进行测试.如果将“if”子句和“switch”语句拉出到状态机模式中,则不会有这么多组合进行测试.如果删除对外部数据提供程序对象的数据库访问权限,则可以提供简单的测试数据来执行数学语句.现在,您正在测试对象创建,状态转换和数据访问,这些都与您聪明的数学语句分开.通过简化它们,所有这些步骤都变得更容易了.

代码难以测试的一个关键原因是它包含“内部依赖关系”,例如它创建的依赖关系或对库的依赖关系.如果你的代码说“Foo theFoo = new Foo();”你不能轻易用MockFoo代替测试.但是如果你的构造函数或方法要求传入theFoo而不是构造它自己,你的测试工具可以很容易地传入MockFoo.

编写代码时,请问自己“如何为此代码编写单元测试?”如果答案是“很难”,您可以考虑更改代码以使其更容易测试.这样做是因为它使您的单元测试代码的第一个实际消费者 – 您通过编写测试来测试代码的接口.

通过改变界面使其更易于测试,您将发现自己更好地遵循“紧密内聚”和“松散耦合”的面向对象原则.

单元测试不仅仅与测试有关.编写单元测试实际上改善了您的设计走得更远一点,你最终得到了测试驱动开发.

祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读