Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为UWP应用程序创建无头单元测试库_C#_Visual Studio_Visual Studio 2015_Uwp_Xunit - Fatal编程技术网

C# 如何为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平台应用程序进行单元测试。我知道VisualStudio提供了一个测试应用程序,但它带有一个head和可执行文件,而不是一个headless库

甚至XUnit也说要创建这个测试应用程序,它又一次有了用武之地

我发现的唯一替代方法是使用PCL将一些功能公开给标准测试类,但这确实不理想,因为它限制了我可以测试的非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的软件推荐站点。