2011-11-05 52 views
14

我剛剛(今天)嘗試SpecFlow首次。我在VS2010 Pro中創建一個新的類庫並添加一個SpecFlow特徵定義文件。SpecFlow錯誤地使用NUnit

事情是,整合似乎沒有正常工作,與各種不同的錯誤。我選擇了MsTest作爲測試運行者,因爲我不會爲調用NUnit而煩惱(我想長期使用NUnit,但目前我只想獲得一些BDD代碼)。然而,生成的代碼文件繼續引用NUnit--這顯然是錯誤的,因爲我剛剛告訴SpecFlow使用MsTest運行。我已經盡我所能地再次調用代碼生成,包括使用Tools> Options> SpecFlow中選擇的MsTest選項創建一個全新的類庫項目。

如果我將測試運行器字段設置爲「自動」並右鍵單擊某個功能文件,然後選擇「運行SpecFlow方案」,我收到一條錯誤消息「無法找到匹配的測試運行器」。

如果我不是改變測試運行領域MSTest的,我得到做同樣的事情不同的錯誤消息 - 「未設置爲一個對象的實例對象參考」。我對此並不感到驚訝,因爲它仍然試圖運行NUnit測試,即使我明確要求MsTest,但顯然它不應該nullref並將其呈現給用戶。

我在做什麼錯?文檔沒有幫助,就我所知,沒有常見問題解答。

編輯#1:我確定,我正在尋找的實際設置使用App.Config使用領域<unitTestProvider name="MsTest" />提供。我可以看到發生了什麼 - Visual Studio選項菜單中的字段似乎沒有修改您當前正在處理的項目。事情是,這使得它看起來像是領域根本沒有做任何事情。我現在已經說服SpecFlow生成MsTest類並使用MSTest runner運行。

所以現在問題變形爲一個稍微不同的問題:工具>選項> SpecFlow>測試亞軍工具字段做什麼(如果有的話)?

回答

1

我從來沒有能夠得到SpecFlow從Visual Studio權的工作,我花了一些時間做這個工作,但從未去任何地方。雖然我發現在Visual Studio 2010中設置NUnit的指令是these,我使用這個快捷方式來運行我的SpecFlow測試,效果很好。

總體而言,我們使用PowerShell來運行大量的測試,我可以納入NUnit的命令行亞軍和SpecFlow報告生成到一個腳本,我可以輕鬆運行。

+0

偉大的提示,謝謝!我立即設置了菜單按鈕,因爲它看起來非常有用,所以無論這種查詢方式提供了一個方便的副作用。雖然對於SpecFlow感到羞恥,但看起來我並不是唯一一個能夠做它應該做的事情的人。實際的產品工作,但VS整合不太正確。 –

+0

是的,我希望它更集成,但我現在確定。現在它的使用確實勝過我的好處。很高興提示幫助! – MichaelF

+0

您是否運行過specflow安裝程序,或者您是否使用NuGet將它添加到項目中?安裝程序將安裝所有集成組件,如Visual Studio集成,其中nuget安裝只添加必要的引用。 –

9

隨着VS2010正確的值是MsTest.2010不MSTEST的記錄。更改你的app.config(對於測試程序集),它會正常工作(至少使用SpecFlow 1.8)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" /> 
    </configSections> 
    <specFlow> 
     <unitTestProvider name="MsTest.2010" /> 
     <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration --> 
    </specFlow> 
</configuration> 
7

回答最新的問題。什麼是「工具>選項> SpecFlow> Test Runner工具」此設置控制實際運行測試的內容,而不會生成測試代碼。如果它設置爲auto,我相信它會查看App.config文件,在其中設置unitTestProvider以確定運行測試的最佳工具。通過同樣的傢伙,SpecFlow作出的alternaive測試轉輪SpecRun http://www.specrun.com/

所以當你去運行測試將使用此選項。正如你已經發現的,雖然代碼生成器使用配置文件來確定它應該生成什麼類型​​的測試(mstest/nunit ..)

如果您運行specfow安裝程序(https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi)以安裝所有Visual Studio Intergration組件您更改它通常會提示的App.config文件以使用新提供程序重新生成功能。手動執行此操作的方法是右鍵單擊功能並選擇「運行自定義工具」

關於文檔,您是否找到了git hub wiki? https://github.com/techtalk/SpecFlow/wiki/Documentation

2

我們使用ReSharper作爲SpecFlow驗收測試的參賽者;它運行良好,開箱即用。雖然ReSharper不是免費的,但它值得每一分錢...