我目前正在 MonoTouch/MonoDroid 上开发一个应用程序,我想改进我的测试(在带有 xamarin 工作室的 Mac 上工作)。我知道如何编写在模拟器上运行的集成测试(至少在带有 iOS 单元测试项目的 iOS 上)。
我现在想做的是 TTD,使用小型的、仅模拟的测试来测试一个指定的类(并且不在任何设备/模拟器中运行 - 仅限单元测试)。我曾经使用 Mockito 在 Java 上执行此操作,并尝试使用 Moq 4.0 在我的单声道解决方案上执行相同操作。
为此,我不需要 Mono 的任何东西,只需要简单的类。所以我尝试创建一个新的 N 单元项目并将我的类链接到该项目中。但是现在,为了编译代码,我需要包含我在那些类中使用的所有引用(例如 Xamarin.Mobile.Geolocator、RestSharp、Geo 等),即使我稍后会模拟它们。当我这样做时,代码会编译,但是当我运行第一个测试时,会出现错误,提示 System.Core 的 xy 版本不可用。这个问题是有道理的,这些库使用了一个特定的、单一版本的系统库,它在该测试项目中不可用。
我看到的唯一解决方案是避免这些引用,并为我在代码中使用的所有库类编写空存根,只是为了让它编译。但这是很多无用的工作,我真的尽量避免。
所以长话短说:有人可以帮助我在 xamarin mono 中进行测试优先开发的工作设置吗?我可以在哪里使用 Moq 之类的模拟框架,而无需在模拟器上运行我的单元测试?重要的是还有一些模拟第三方库的解决方案(并使代码在我的测试项目中编译)。