2010-08-12 34 views
7

我已經配置Specflow在我的「規範」類庫的app.config像這樣指定它爲目標的MSTEST框架(而不是NUnit的):如何讓VS2010識別由SpecFlow生成的我的mstests?

<configSections> 
    <section name="specFlow" 
    type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
</configSections> 

<specFlow> 
<unitTestProvider name="MsTest.2010" /> 
</specFlow> 

所以,一旦它在的地方,我可以看到我的測試夾具被正確地Specflow自定義工具產生的,具有正確TestClassAttribute()和方法等:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.3.0")] 
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()] 
... 

的規範類構建,但現在我不能運行使用Test測試 - >運行 - - >在我的vista 64盒子上的Visual Studio 2010內的解決方案中的所有測試。爲什麼VS不認可這些作爲有效的測試運行?

回答

4

我不得不重新創建項目爲Test Project而不僅僅是Class Library - 因爲我已經開始使用NUnit和SpecFlow進行開發,所以我創建了一個香草類庫來保存我的具有NUnit屬性的規格。我認爲我可以簡單地將此現有項目的app.config指向mstest框架並停止使用NUnit,但VS2010從未識別出測試,儘管specflow的自定義工具正確創建了存根。

因此...我在我的解決方案中添加了一個新的Test Project,將我的所有規範代碼移動到新項目,然後重新編譯,然後中提琴,VS2010識別測試。我確信它在.csproj文件的XML中找到了一個GUID,或者是它告訴它連接測試框架的東西,但是我沒有挖掘到那麼遠。

希望這可以幫助別人。

8

Dror HelperAlex Duggleby你會希望下面的行添加到您的.csproj文件:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

添加它FileAlignment元素之後,並重新加載項目。它現在應該是一個MS Test項目,並且您可以在此項目的上下文中獲得MS Test功能。的GUID是指:

  • {3AC096D0-A1C2-E12C-1390-A8335801FDAB} - 測試項目
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#類庫
-1

要改變您的類庫項目模板到一個測試項目,修改的.csproj,並添加以下行:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

以在第一組元素:

<PropertyGroup> 
    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 
相關問題