是否可以使用MSpec来测试.net微框架项目?

时间:2011-10-15 23:33:43

标签: unit-testing mspec .net-micro-framework

我希望能够使用MSpec或其他BDD / TDD框架来测试针对.net微框架的代码。遗憾的是,从非MF组件中无法引用MF(微框架)组件。这是一种耻辱,因为它只是C#代码,单元测试在这种情况下非常有用。有没有人为.net微框架项目制定单元测试方法(最好是MSpec)?

2 个答案:

答案 0 :(得分:2)

我下载了最新的Machine.Specifications并将所有代码移动到Micro Framework类库项目中。我只得到323个编译错误。需要改变的简短清单...

  1. 没有扩展方法
  2. 没有泛型
  3. 没有LINQ
  4. 没有自定义属性
  5. 没有表达树
  6. 是否值得尝试在此.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);
        }
    }
    

    重建整个Assert / Should库(记住,没有扩展方法!)。

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

答案 1 :(得分:0)

另一个选择 - 有点痛苦,可能不适合 - 是在微框架旁边创建一个虚拟的'Normal'.Net3.5 / .Net4.0项目。由于微框架C#几乎都是源兼容的,您也可以将源文件添加到虚拟项目中 - 即源文件将属于两个项目。然后,#IFDEFS需要一些最小的条件编译,例如围绕Microsoft.Spot命名空间包含。

此时虚拟项目可以使用任何正常的测试框架NUinit,Specflow完全测试。显然,这种方法需要一定程度的谨慎和关注 - 注意主机字节顺序问题等,当然两个项目都必须并行维护。

另一种选择是通过模拟器项目进行测试,这将是更彻底的方法。然而,虚拟项目方法肯定可以有利于WRT快速发展,TDD等。