2010-02-05 30 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)更像是集成或驗收測試。