Nunit 单元测试单触
有人成功地为他们的Monotouch项目运行了单元测试吗? 我读过其他文章,其中告诉人们手动添加对适当程序集的引用。 这样做会使项目编译,但它仍然不会运行测试 我有两个项目的解决方案;Monotouch导航项目和NUnit库项目。 我在测试项目中添加了对我的monotouch项目以及monotouch和其他所需组件的引用。 仅在monotouch程序集外运行代码的测试将正常运行,访问monotouch代码的测试失败,原因是: System.IO.IOException:写入失败-->System.Net.Sockets.SocketException:套接字已关闭 在System.Net.Sockets.Socket.Send处(System.Byte[]buf,Int32偏移量,Int32大小,SocketFlags标志)[0x00000]in:0 在System.Net.Sockets.NetworkStream.Write(System.Byte[]缓冲区,Int32偏移量,Int32大小)[0x00000]中:0 ---内部异常堆栈跟踪的结束--- 在System.Net.Sockets.NetworkStream.Write(System.Byte[]缓冲区,Int32偏移量,Int32大小)[0x00000]中:0 位于:0中的System.IO.BufferedStream.Flush()[0x00000]处 at(wrapper remoting invoke with check)System.IO.BufferedStream:Flush() 在System.IO.BufferedStream.Dispose(布尔处理)[0x00000]中:0 在:0中的System.IO.Stream.Close()[0x00000]处 位于:0中的Mono.Remoting.Channels.Unix.ClientConnection.ProcessMessages()[0x00000] 我发现他在说: “。如果您没有在iPhone或iPhone模拟器上运行,则无法调用必要的本机API来实例化组件…” 所以我真正想知道的是,现在是否真的可以在Monotouch中进行单元测试,或者如果不可能,其他人都在做什么Nunit 单元测试单触,nunit,xamarin.ios,Nunit,Xamarin.ios,有人成功地为他们的Monotouch项目运行了单元测试吗? 我读过其他文章,其中告诉人们手动添加对适当程序集的引用。 这样做会使项目编译,但它仍然不会运行测试 我有两个项目的解决方案;Monotouch导航项目和NUnit库项目。 我在测试项目中添加了对我的monotouch项目以及monotouch和其他所需组件的引用。 仅在monotouch程序集外运行代码的测试将正常运行,访问monotouch代码的测试失败,原因是: System.IO.IOException:写入失败-->System
谢谢 你找到的是我的帖子。到目前为止,这是我所能做到的最好的:
从好的方面来看,这鼓励了分离您的关注点,并且(理论上)应该更容易将应用程序移植到MonoDroid上。但是保持这两个解决方案的同步是一件痛苦的事情,当它们看不见的时候,很容易偏离实际编写测试的方向。您实际上不必创建第二个解决方案,也不必提取与操作系统无关的代码。不过有一些技巧。一般来说:
Xamarin文档团队在上添加了一个文档,该文档使用项目的修改版本进行操作。好文章!在那里你会说:“…大多数人在MonoTouch下进行测试的主要问题是,默认情况下,他们会选择“添加…添加新项目…NUnit库项目”,但我看不到你描述了一种首选的方法。我尝试在/Developer中添加对正确程序集的所有引用。。。。。文件夹并使路径成为绝对路径,但运行这些路径仍会导致System.Net.Sockets.SocketException崩溃:套接字已关闭。我还没有开始讨论Supervisor-Controller模式,但这听起来是个好主意!听起来您正在测试的东西仍在从monotouch.dll挂接(或尝试)某些东西。我不推荐添加单元测试项目的另一种方法,因为默认方法可能仍然是最简单的,但需要注意的是,MonoTouch代码的接口必须清晰,所需的引用也必须清晰。更好的解决方案是有一个特定的“MonoTouch单元测试”项目。这还不可用,不过如果您愿意,它是开源的!:)好吧,我误解了您的“修复引用”位,认为它实际上也允许使用monotouch.dll测试代码。我将尝试实现你博客中描述的Supervisor Controller模式。到目前为止,我已经尝试将操作系统代码与其他代码分开,这样我可以让我的大部分代码单元可测试,但是我无法正确测试我的控制器,无法进行端到端测试,这非常令人恼火。我将尝试Phegan的帖子中提到的模式,希望也能得到正确的参考,以便测试我的monotouch代码。