Capers Jones, International Thomson Computer Press, 1997)。尽管这是对单元测试的价值的强有力的证明,但我们的看法是,只有在最初的开发之后,单元测试 — 更具体地说应该是自动单元测试(当用每个更改或生成运行测试时)— 才会真正体现出它的价值。自动测试提供了附加保护,以帮助确保更改不会意外改变现有的功能。
在 Information Bridge Framework 开发的上下文中,需要考虑几件事情。首先,“转椅”信息工作者所完成的工作的特点是需求不断演化 — 有时会非常快速。这些新的需求可能由新的工作要求引起,由对基础信息资源的更改引起,或者只是由了解到更多有关这些人完成工作的方式的信息而引起。但是,重要的是来自这些开发项目的信息可能用来进行业务关键的决策(它可能仅仅基于通过该开发公开的信息)。如果功能不是对于开发的每个迭代都可靠,则发生灾难性后果的可能性是巨大的。既然快速而准确地调整 Information Bridge Framework 解决方案以适应不断更改的需求是如此重要,那么不难看出自动单元测试对于这些开发项目的每个部分是何等关键。就像任何工具一样,自动单元测试不应当成为您唯一的测试项目。
使用 MSTDSL
MSTDSL 用于简化对智能标记的某些最常见功能以及对某些系统级别智能标记设置的访问。MSTDSL 的能力涵盖了非常广泛的功能。为了更加明了,本文只讨论针对指定的解决方案实现单元测试所需的方法。该讨论主要集中于构成 MSTDSL 的命名空间中的两个命名空间:识别器和操作。来自这些命名空间的实例支持对已安装的智能标记进行枚举、检索特定的智能标记实例、检查属性,并且在某些情况下,支持调用智能标记接口上的方法并且无须将它们加载到 Microsoft Office 2003 中。
该库提供了用于访问识别器和操作的类似方法。首先,分别实例化命名空间集合 RecognizerCollection 和 ActionCollection,然后调用各自的加载方法(LoadRecognizers 或 LoadActions)。通过使用上述任一方法,该调用在系统注册表中查找已安装的智能标记,并且试图实例化它找到的任何智能标记。在检索了您感兴趣的智能标记对象的实例之后,MSTDSL 为很多公开的方法提供了简化接口。应当说明的是,MSTDSL 并未公开智能标记的每个属性或方法,但是它的确提供了使用最常见属性或方法的能力。
使用 NUnit
NUnit 是一个自动单元测试框架,完全使用 C# 编写(可以使用任何 Microsoft .NET 语言编写)。您通过在由 NUnit 框架中的属性描述的对象上实现方法来创建测试。在已经实现 NUnit 之后,NUnit .exe 文件(包括命令行和图形用户界面 [GUI] 文件)可以发现这些方法,并且以自动方式运行它们。该框架极其灵活,并且使测试可以查询各种条件以及查找预期的异常。NUnit 下载随附了一个示例项目,该项目演示了测试方法的各种使用方式,包括声明各种条件和测试预期的异常。
NUnit 用于运行自动测试的测试应用程序
当您使用 NUnit 时,对各种条件的测试通过 NUnit.Framework.Assert 对象的多个静态方法进行了简化。NUnit 框架下载提供了有关该主题的文档,但是该演示中的大多数测试都使用 Assert.IsTrue 方法来测试 True 条件,并且使用 Assert.AreEqual 方法来查找预期的条件。如果在这两种情况下条件都失败了,则整个测试失败,并且 NUnit 应用程序会显示适当的信息。
我们之所以选择 NUnit,是因为它已经由很多开发人员使用,它具有良好的说明,它被认为很稳定,并且最好的一点在于它是免费的!尽管如此,如果您使用的是除 NUnit 以外的测试框架,那么请不要担心。只要您的测试环境支持 Microsoft .NET 框架,您就能够使我们这里描述的技术适应您自己的测试环境。