我希望能够使用MSpec或其他BDD / TDD框架来测试针对.net微框架的代码。遗憾的是,从非MF组件中无法引用MF(微框架)组件。这是一种耻辱,因为它只是C#代码,单元测试在这种情况下非常有用。有没有人为.net微框架项目制定单元测试方法(最好是MSpec)?
答案 0 :(得分:2)
我下载了最新的Machine.Specifications并将所有代码移动到Micro Framework类库项目中。我只得到323个编译错误。需要改变的简短清单...
是否值得尝试在此.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等。