单元测试真实服务器数据交换?

时间:2013-09-06 05:50:41

标签: unit-testing mvvmcross

我正在开发一个具有客户端和服务器端的项目。我正在编写一个“预登记”工具,它将验证我们在客户端和服务器之间的大量通信。

我已经在双方进行了单元测试,现在我真的想测试两者之间的集成。 就像与服务器的真实客户端连接一样,反之亦然。

我真的想对此进行单元测试,但我很难弄清楚如何初始化MMVMCross框架和我的视图模型类。

在另一个线程中,我在运行测试的“控制台应用程序”上寻求帮助,但是初始化框架也很困难,这让我放松了使用Visual Studio和reSharper进行单元测试的酷感。

我的视图模型使用SQLite和HttpClient与async / await。

例如:我找不到实例化需要此接口的视图模型的方法:

IChatService, IMvxMessenger, IDataService, ISettingsService

一些来自框架的一些来自我自己的代码。 我知道并且我正在尝试在TestFixtureSetUp上注册我的那些,但是当然,由于MVVM基本子系统(ioc?)尚未设置,因此失败了。

某些上述服务(例如IDataService)也需要ISQLiteConnectionFactory, IMvxMessenger, ISettingsService

我知道单元测试应该很快,但我的想法是将所有这些测试都放在一个新的Category中,我只能在我的签到之前运行,我的伙伴,服务器开发人员才能运行在他办理登机手续之前。

这里最好的方法是什么? 任何提示,建议,调查/研究的事情都会有所帮助,因为我几乎坚持这一点。

塞尔吉奥

1 个答案:

答案 0 :(得分:1)

  

例如:我找不到实例化需要此接口的视图模型的方法:

     

IChatService,IMvxMessenger,IDataService,ISettingsService

通常,这将使用Mock实现完成,然后直接使用这些Mocks调用ViewModel构造函数。

  

我很难弄清楚如何初始化MMVMCross框架

为了初始化框架的IoC部分,您可以使用MvxIoCSupportingTest助手类 - https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Test/Cirrious.MvvmCross.Test.Core/MvxIoCSupportingTest.cs

如果您需要框架的其他部分,那么通常您应该以某种方式模拟这些。例如,看看在这两篇文章中如何模拟导航:


如果有帮助,此类测试的示例为https://github.com/slodge/MvvmCross-Tutorials/blob/master/Sample%20-%20TwitterSearch/TwitterSearch.Test/TwitterViewModelTest.cs#L21


如果此答案没有足够的信息,请提供更多关于您尝试编写的测试的示例代码。