是否有任何书籍或文章向您展示如何使用NUnit来测试程序的全部功能?这种类型的测试是否有名字?关于使用NUnit测试整个功能的书籍或文章
这与NUnit在测试单个类的单元测试中的典型用法不同。这与验收测试类似,不同之处在于它由开发人员编写,以识别该程序是否按照客户希望该程序执行的内容进行解释。我不需要它可以被非程序员读取,也不需要为非程序员提供可读的规范。
我遇到的问题是保持此功能测试代码的可维护性。我需要帮助组织我的功能测试代码。我还需要帮助组织程序代码以这种方式进行驱动。我很难在向程序发出命令的同时仍然具有良好的代码设计。
目前我有一个名为程序与一个名为运行一个公共方法类。每次测试时,我都会从程序的开始处开始,就像用户一样,然后到达程序中需要特定功能的地方。然后我以某种方式使用该功能,并验证它做了我想要的。我有一个叫做Commands的类,它将程序的不同特性公开为方法。 Commands对象的一个实例被传递给程序,并最终传递给每个Form类。这些将订阅由命令类的方法调用的Commands类的事件(每个方法一个匹配事件)。这些事件是通过指向在使用用户界面的某个部分时调用的方法来订阅的,因此可以通过我的测试来驱动整个程序。如果您针对当前未订阅的事件在Command对象上调用方法,则会引发FeatureMissingException。
所有这些工作,但我不喜欢Command类。它负担太重(程序的每个功能)都太大了。 Commands类也是一个依赖磁铁(所有Form类都有它的一个实例,但只订阅表示可以通过它们的UI激活的功能的事件)。
感谢您告诉我这是集成测试。在发布我的问题之前,我查看了集成测试,我认为这是另一回事。使用继承为测试提供上下文在理论上听起来不错,但是当我在实践中尝试这样做时,它导致了令人生畏的测试代码。此外,这仍然不能解决我的问题,即如何在保持良好设计的同时,向整个系统发出命令而不是单个类。 – 2010-04-06 22:01:55