C# 如何为UWP应用程序创建无头单元测试库
我想创建一个无头测试库,用于对我的通用Windows平台应用程序进行单元测试。我知道VisualStudio提供了一个测试应用程序,但它带有一个head和可执行文件,而不是一个headless库 甚至XUnit也说要创建这个测试应用程序,它又一次有了用武之地 我发现的唯一替代方法是使用PCL将一些功能公开给标准测试类,但这确实不理想,因为它限制了我可以测试的非uwp功能C# 如何为UWP应用程序创建无头单元测试库,c#,visual-studio,visual-studio-2015,uwp,xunit,C#,Visual Studio,Visual Studio 2015,Uwp,Xunit,我想创建一个无头测试库,用于对我的通用Windows平台应用程序进行单元测试。我知道VisualStudio提供了一个测试应用程序,但它带有一个head和可执行文件,而不是一个headless库 甚至XUnit也说要创建这个测试应用程序,它又一次有了用武之地 我发现的唯一替代方法是使用PCL将一些功能公开给标准测试类,但这确实不理想,因为它限制了我可以测试的非uwp功能 有什么建议吗?与桌面应用程序相比,Windows运行时应用程序是在应用程序容器上运行的(一个独立的进程,完整性较低) UWP
有什么建议吗?与桌面应用程序相比,Windows运行时应用程序是在应用程序容器上运行的(一个独立的进程,完整性较低)
UWP应用程序的单元测试在空白UWP应用程序上运行(以确保测试库也在应用程序容器上运行)。由于传统的测试加载程序是在正常进程上运行的,我担心我们无法为UWP应用程序创建一个可以在正常进程上运行的无头单元测试库。我遇到了类似的挑战。虽然我无法进行无头测试,但我所做的是将业务逻辑与引用uwp类的类(例如Windows)分开。我确保业务逻辑只包含C#标准类(有时,我确实需要将一些类映射到更常见的dotnet核心类,比如对我的资源使用
哈希表而不是Windows.ApplicationModel.resources
)。Hashtable
成了我传递资源的接口,我有一个(公认未经测试的)类来回映射它们
一旦我这样做了,我就使用Microsoft.VisualStudio.TestTools.UnitTesting
创建了一个常规的无头dotnet核心单元测试
单元测试项目文件包含我想要测试的所有类(作为链接),以及单元测试本身。通过这样做,我能够测试所有的业务逻辑。唯一没有得到测试的是UWP特定的东西(在我的例子中,它只是gui代码和一些映射类)。您可以使用多种技术(抽象接口/MVVM/Delegate等)来确保调用对GUI的回调,但无法测试最高层
虽然它并不完美,但它确实提供了对应用程序重要部分的测试。如果您的GUI仅用于显示,并将所有逻辑放在一个可以测试的类中,那么将产生很少的未测试代码。欢迎使用堆栈溢出。这个问题可能更适合Stack Exchange的软件推荐站点。