2012-10-01 31 views
29

我正在嘗試單元測試我創建的可移植類庫,並且要確保它正在使用與其目標相同的框架子集進行測試。如何爲.NET Portable Class Library創建單元測試程序集?

Per the Visual Studio ALM + Team Foundation Server blog,MSTest單元測試框架在Visual Studio 2012 RC中轉換爲PCL;但是,我無法創建可移植的類庫,然後引用VS2012 RTM中的MSTest框架。

  • 瀏覽「參考」對話框顯示我沒有將單元測試組件註冊爲與PCL兼容。
  • 將項目文件中的手動GAC引用添加到Microsoft.VisualStudio.QualityTools.UnitTestFramework會產生未找到引用的構建錯誤。
  • 將手動直接裝配參考添加到C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll會生成一個生成警告,說明UnitTestFramework程序集引用了不兼容的mscorlib版本。

我沒有找到(感謝早期的答案),有一個項目類型Unit Test Library (Windows Store apps),在C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll引用不同 MSTest的組裝。此項目類型創建一個小的無UI Windows應用程序...完整的清單和一切。它也不允許我指定我定位的框架 - 它似乎只適用於Windows應用商店應用。

潛在的故障假設,我應該用針對同一個框架子集作爲圖書館被測單元測試組件是測試我的便攜式類庫項目...

如何創建一個.NET Portable Class Library的單元測試程序集?

(我開到其他框架,也針對PCL,我只是不知道目前除了MSTest的其他解決方案已經考慮到這一點的。)

回答

0

便攜式檢測庫是Windows 8 SDK下坐落在這裏(對我來說):

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll 

你會看到它有一個斷言類和必要[的testXXX]屬性。如果我創建一個Portable Library項目並添加對該程序集的引用,Visual Studio的測試瀏覽器將顯示標有[TestMethod]屬性的測試,但不會執行它們。

+0

我不確定這是如何幫助查詢者在這裏?如果您試圖提問,請提供詳細信息並提出新問題。 –

+0

看來這個程序集引用的「正確」方式是執行文件 - >新建項目 - > Windows應用商店 - >單元測試庫(Windows應用商店應用)。這允許測試運行者執行測試。當然,這使得一個帶有清單和所有東西的完整「應用程序」,這不是真正的「便攜式類庫」。我會看看我是否能找到更「正式」支持的不同方式。如果沒有,也許這與我的答案接近? –

+0

我用上面的信息更新了我的問題。我真的希望得到一個答案,我可以在某種程度上允許指定我所針對的框架,但也許這太需要了。我們將看到。 –

2

據我所知在這個時候沒有PCL庫unitasting。

但是我發現在github上這個項目很有前途和目標正是你需要的:

https://github.com/jbtule/PclUnit

它遵循相同的單元測試的風格在NUnit也借了一些東西從的xUnit,所以應該相當容易適應它。

4

xUnit現在支持PCL單元測試; http://xunit.github.io/

+0

你能指點我的文檔,展示如何確保測試針對目標框架子集運行,而不是針對完全.NET 4.5運行,僅使用PCL單元測試程序集?從我所看到的情況來看,xunit支持只是將您的測試程序集編寫爲PCL,而不確保跑步者也在該子集中執行......但我可能會錯過文檔。 –

+1

我現在明白你在找什麼......你在觸摸測試錯誤的東西;如果代碼是PCL compat。它應該在每個平臺上運行相同。特別是從單元測試的角度來看,我認爲你不應該關心這個平臺。但是,如果您正在進行集成測試,那麼該平臺很重要。那麼xUnit可能現在不會幫助你。但看看:https://github.com/xunit/devices.xunit你可能想在那裏貢獻。 – noocyte

+1

我們發現,雖然保持Autofac PCL工具不是絕對可靠的。它有時可以選擇錯誤的平臺子集。在實際的平臺子集上運行測試將有助於驗證事情是否正常工作。 –

0

我有一個Windows應用商店的通用應用程序& Windows Phone包含一個PCL與我的ViewModels。我剛創建了一個單元測試項目,並將viewmodel添加爲「鏈接文件」。這只是一個小測試,它在hello世界應用程序中檢查字符串,但它似乎工作。

只有時間能證明這個解決方案是否滿足我未來測試的需求。

1

最近在這個問題上,我試圖設置一個新的解決方案,我有一個Portable Class Library,我現在可以單元測試。我不記得究竟是什麼我嘗試過,但這裏是我現在的工作是什麼:

  • 的Visual Studio高級專業2013更新4
  • 一種類型的項目Portable Class Library
  • 一個Windows窗體項目
  • 一通用的應用程序由一個窗口,一個的Windows Phone和....Shared項目
  • 一個單元測試項目

來自通用的...Shared項目除了App.xaml文件外是空的,所以目前還沒有真正使用它。

所有包含UI的項目都引用Portable Class Library類型的項目,它們都使用相同的代碼。

單元測試項目也將代碼從Portable Class Library引用,我添加了引用通常的方式(右擊ReferencesAdd reference然後從Solution的PCL項目 - Projects

解的結構是下面的屏幕截圖所示:

enter image description here

我不能完全肯定爲這個問題是什麼,當我試圖讓整個PCL單元測試的事情,去年的工作,但現在看起來應該如此。

如果需要,請隨時索取更多信息,如有可能,我會盡力幫助。

相關問題