2011-10-15 92 views
1

我希望能夠使用MSpec或其他BDD/TDD框架來測試針對.net微框架的代碼。不幸的是,從非MF組件中引用MF(微框架)組件是不可能的。這是一個恥辱,因爲它只是C#代碼和單元測試在這種情況下非常有用。有沒有人爲.net微框架項目制定過單元測試(最好是MSpec)?是否可以使用MSpec來測試.net微框架項目?

回答

2

我下載了最新的Machine.Specifications,並將所有代碼移入Micro Framework類庫項目中。我只有323個編譯錯誤。事物的短名單,將需要改變......

  1. 沒有擴展方法
  2. 沒有泛型
  3. 沒有LINQ
  4. 沒有自定義屬性
  5. 沒有表達式樹

是否值得在這個.NET Framework系列上重建MSpec?可能不會。這是作者/提交者想要跟上的事情嗎?可能不會。


我嘗試定製基於此goofy forum thread項目類型GUID和CSHARP進口和結束了一堆錯誤。包括「unsupported by the compiler error」。

錯誤4 TestableMicroLibrary.Tests d:\ TestableMicroLibrary \ TestableMicroLibrary.Tests \ MMP 0x81010009


我認爲你將不得不推出自己的。對測試類/方法使用約定和反射(剩下的唯一東西)。您可以繼續使用行爲驅動樣式,如test case class per fixture

public class When_doing_something_neat 
{ 
    public void It_should_frob_the_widget() 
    { 
     Assert.IsTrue(_widget.IsFrobbed); 
    } 
} 

並重建整個斷言/應該庫(記住,沒有擴展方法!)。

public static class Assert 
{ 
    public static void IsTrue(bool thing) 
    { 
     if(!thing) throw new AssertionException("It is not true"); 
    } 
} 
+0

這是一個相當全面的答案,謝謝你。 –

0

另一種選擇 - 這是一個有點痛,可能不適合 - 是創建一個虛擬沿着側microframework一個「正常」 .NET3.5/.Net4.0項目。由於微框架C#幾乎都是源代碼兼容的,您可以將源文件也添加到虛擬項目中 - 即源文件將屬於兩個項目。然後,使用#IFDEFS將需要一些最低限度的條件編譯,例如圍繞Microsoft.Spot命名空間包含。

在這一點上,虛擬項目完全可以用任何正常的測試框架NUinit,Specflow等來測試。顯然,這種方法需要一定程度的謹慎和注意 - 注意主機字節順序問題等,當然這兩個項目都必須保持並行。

另一種選擇是通過模擬器項目進行測試,這將是更徹底的方法。然而,虛擬項目的方法當然可以有利於WRT快速發展,TDD等。

相關問題