0

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

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

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

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

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

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

IChatService, IMvxMessenger, IDataService, ISettingsService

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

上面的一些服务,IDataService例如,也需要ISQLiteConnectionFactory, IMvxMessenger, ISettingsService.

我知道单元测试应该很快,但我的想法是将所有这些测试放在一个新Category的 .

这里最好的方法是什么?在这一点上,任何提示、建议、要调查/研究的事情都会有所帮助,因为我几乎被困在这个问题上。

塞尔吉奥

4

1 回答 1

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


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

于 2013-09-06T07:24:39.127 回答