是否有任何书籍或文章向您展示如何使用NUnit测试程序的整个功能?这种测试有名称吗?
这与测试单个类的单元测试的典型NUnit使用不同。这与验收测试类似,不同之处在于开发人员编写该程序以识别程序执行的操作是客户希望程序执行的操作。我不需要非程序员可读,也不需要为非程序员生成可读的规范。
我遇到的问题是保持此功能测试代码的可维护性。我需要帮助来组织我的功能测试代码。我还需要帮助组织程序代码以这种方式驱动。我仍然很难在程序设计时发出命令。
目前我有一个名为Program的类,它有一个名为Run的公共方法。每次测试我都会在程序开头就像用户那样开始,然后到达程序中可以获得特定功能的所需点。然后我以某种方式使用该功能并验证它是否符合我的要求。我有一个名为Commands的类,它将程序的不同功能公开为方法。 Commands对象的一个实例被传递给程序,并最终传递给每个Form类。这些将订阅Commands类中由命令类的方法调用的事件(每个方法一个匹配的事件)。通过指向在使用用户界面的某个部分时调用的方法来订阅事件,从而允许我的测试可以驱动整个程序。如果在Command对象上调用当前未订阅的事件的方法,则抛出FeatureMissingException。
所有这些都有效,但我不喜欢Command类。它太大了,责任太多(程序的每个功能)。 Commands类也是依赖磁体(所有Form类都有一个实例,但只订阅表示可以通过UI激活的功能的事件。)
答案 0 :(得分:2)
它被称为integration testing。集成测试更难以实现自动化,并且通常是手工完成的。许多更简单的测试仍然可以使用NUnit完成 - 你不需要做任何特殊的事情,只是不要使用Mocks(就像你应该做单元测试一样),这样你就可以测试模块实际上是如何组合在一起的。
Context/specification是组织这些测试的好方法。
答案 1 :(得分:2)
您想要做的是integration testing,就像其他答案所暗示的那样。这将允许您进行功能/功能测试。 StoryQ或SpecFlow的最常见框架。这允许您以BDD样式开发测试,并且可以根据您想要的规范进行自动化。
像Selenium这样的工具允许您在浏览器中进行功能测试,以执行最终用户的操作。所有这些都可以用NUnit驱动,因为NUnit纯粹是一个运行测试的框架,它们是大型功能测试的单元测试