zoukankan      html  css  js  c++  java
  • 单元测试...

    TheServerSide.Net上有一篇不错的文章,“10 Ways to Make Your Code More Testable”(10种让你的代码更具可测性的方法),这10种方法中,有几项不但是让代码更具可测性的方法,也是写代码时必需遵循的基本Principla,但也有几项非常有意思的:

    只要可行,就让方法返回一个值。这样不但可以让代码更加容易被测试,而且也更加容易让调用者了解它的运行状态。不过作者也说了这个方法并非是“非此即彼”,而是“as much as possible”。

    对于牵涉到包含了数据库的操作,这篇文章提出的解决方法就是很常见的Mock Data Access Object,即在测试时使用一个并非真正去读写数据库的假数据存取对象,来模拟真正的DAO的行为。

    说到牵涉到数据存取的测试,在单元测试领域这的确是一个容易让人挠头的问题。在这里我郑重推荐MbUnit这个工具,它内置了两种最常见的解决这个问题的方法,使我们的日子更轻松了。

    1、RollBackAttribute,这个特性利用COM+的Transaction,将整个测试方法的操作置于一个事务里面,来达到自动回滚的目的。

    [Test]
    [RollBack]
    public void TestMethod()

    Roy Osherove一篇文章比较详细的对这种方法进行了描述。

    2、完整恢复数据库,这个方法基于一种很简单的数据恢复方式:在某个地方(通常是测试开始前或结束后),让数据库根据我们提供的Backup文件自动恢复。

    [TestFixture]
    [SqlRestoreInfo("connectionstring","databasename",@"c:\db.bak")]
    public class TestClass
    {

        [Test]
        [RestoreDatabaseFirst]
        public void TestMethod()

    “SqlRestoreInfo”特性提供了必要的连接字符串、数据库名,和数据库备份文件信息,“RestoreDatabaseFirst”特性指明了在执行测试方法前先用备份文件来恢复数据库。

    最后,介绍一个系列文章,Automating Unit Testing With a Base Class Posts,讲解了一个进行“自动化”测试的方法。

  • 相关阅读:
    January 25th, 2018 Week 04th Thursday
    January 24th, 2018 Week 04th Wednesday
    January 23rd, 2018 Week 04th Tuesday
    January 22nd, 2018 Week 04th Monday
    January 21st, 2018 Week 3rd Sunday
    January 20th, 2018 Week 3rd Saturday
    January 19th, 2018 Week 3rd Friday
    January 18th, 2018 Week 03rd Thursday
    January 17th, 2018 Week 03rd Wednesday
    January 16th, 2018 Week 03rd Tuesday
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436783.html
Copyright © 2011-2022 走看看