2010-02-05 53 views
2

我使用Cruise Control.NET和NAnt在我们的代码库上自动运行NUnit测试。一些测试会导致显示Windows窗体。当这些测试从VS或NUnit GUI手动运行时,它们工作正常。当通过巡航控制系统服务运行,我得到以下异常:用WinForms和NUnit自动测试

System.InvalidOperationException : Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application. 

短干脆不包括测试或重写测试,以便不显示的形式,还有没有其他的方法可以让我修改测试或得到NUnit在从服务中调用时运行这些测试?

回答

1

您可以始终登录用户,并将服务附加到用户会话(how to create interactive services)。但是,如果你修改你的代码和测试,那么winform的东西就会被抽象出来。

1

我通常用属性[Explicit]标记这样的测试,所以它们只会在我明确运行但不在CCNET服务器上运行。其他方法可能是模拟屏幕的行为,因此不需要显示它。

+0

此属性可以添加到单个测试方法或完整的测试夹具 – 2010-02-05 21:39:58

1

您可以通过executing CCNET from command line运行这些测试,而不是将CCNET作为服务执行。

但是我会建议保持不同级别的测试彼此分开。如果测试变得复杂,即为了运行需要更复杂的设置(例如特殊用户交互),则此测试比单元测试(即使它使用NUnit)更像是集成或验收测试。