如何对使用 XamlIslands 的 WPF 应用程序进行单元测试?

How to unit test a WPF application which uses XamlIslands?

我正在开发一个 WPF 应用程序,我正在使用 Xaml Islands 来显示 win10 UI 组件。为此,我需要创建一个 UWP 项目,我可以在其中实现这些组件。

我想为我的业务逻辑编写单元测试,它在 WPF 项目中。我无法创建 Unit Test App (Universal Windows),因为无法将 WPF 应用程序添加为对该项目的引用。因此,我尝试创建一个针对 .NET Core 的测试项目(尝试 MSTest ProjectxUnit Test Project),但是当我添加到 WPF 应用程序的引用时,它显示以下错误:

Project <UWP...> is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project <UWP...> supports: uap10.0.18362 (UAP,Version=v10.0.18362)

这是因为 WPF 应用引用了 UWP 应用,以显示 win10 组件。

那么,有什么想法吗?如何将单元测试项目添加到我的解决方案中?

So, any idea, how can I add unit testing project to my solution?

有一种称为 Model-View-ViewModel (MVVM) 的设计模式,它是 推荐的设计模式,用于开发基于 XAML 的 UI 应用程序。如果您真的想使用 XAML 在 Windows 上开发 UI 应用程序,那么您真的应该学习它。

除了带来的关注点分离之外,采用它的主要好处之一是可测试性。这个想法是你在视图模型中编写你的应用程序逻辑,可以很容易地独立于应用程序的其余部分进行单元测试。

使用这种方法,可以在 class 库中实现您的视图模型 classes,该库对 WPF 或 UWP 程序集的依赖性很小或没有依赖性,然后只需添加对此 class 像往常一样来自你的测试项目的库。