在 Visual Studio 2015 年为 UWP 加速单元测试的任何方法
Any way to speed up unit testing in Visual Studio 2015 for UWP
在Visual Studio 2015 测试Windows 通用class 库(.NET 4.6)时,"red->green->refactor" 周期所需的时间相当长。我的测试项目只是标准的 MSTest "Unit Test App" 项目。即使在全新解决方案、全新主题和测试项目以及基本 int Add(int n1, int n2)
方法的最简单场景中,也需要大约 8-15 秒。这是从单击 "run test" 到显示 pass/fail 的时间(在进行小的代码更改后)。
在我的机器 (Win 10 pro) 上进行相同的实验,但使用基于 WPF 的解决方案产生大约 1-2 秒。
在UWP场景下,实际测试时间本身是79ms。剩下的时间在编译和部署单元测试应用程序容器。
有什么方法可以显着加快 UWP 的 TDD 速度吗?
TDD 周期这么长的原因是因为所有 UWP 代码都必须 运行 在 AppContainer 中,这需要打包和部署,这很慢。
解决此问题的方法是将尽可能多的代码分离到一个不需要 运行 的 AppContainer 项目中,然后测试该项目。
此问题的解决方案是为您的应用程序逻辑使用可移植的 class 库,而不是 UWP class 库。您将在新项目对话框中找到可移植的 class 库:
默认设置应该有效:
然后您需要从 UWP 添加对可移植库的引用,以便您可以使用它。要测试可移植库,请使用常规的非 UWP 单元测试项目:
注意 - 要完成这项工作,您需要将单元测试项目的目标框架从 4.5.2(默认)更改为 4.6。
您 运行 来自常规单元测试项目的任何单元测试都将 运行 尽可能快,因为它不需要 运行 在 AppContainer 中。我对此进行了测试,内环速度非常好。希望对您有所帮助!
在Visual Studio 2015 测试Windows 通用class 库(.NET 4.6)时,"red->green->refactor" 周期所需的时间相当长。我的测试项目只是标准的 MSTest "Unit Test App" 项目。即使在全新解决方案、全新主题和测试项目以及基本 int Add(int n1, int n2)
方法的最简单场景中,也需要大约 8-15 秒。这是从单击 "run test" 到显示 pass/fail 的时间(在进行小的代码更改后)。
在我的机器 (Win 10 pro) 上进行相同的实验,但使用基于 WPF 的解决方案产生大约 1-2 秒。
在UWP场景下,实际测试时间本身是79ms。剩下的时间在编译和部署单元测试应用程序容器。
有什么方法可以显着加快 UWP 的 TDD 速度吗?
TDD 周期这么长的原因是因为所有 UWP 代码都必须 运行 在 AppContainer 中,这需要打包和部署,这很慢。
解决此问题的方法是将尽可能多的代码分离到一个不需要 运行 的 AppContainer 项目中,然后测试该项目。
此问题的解决方案是为您的应用程序逻辑使用可移植的 class 库,而不是 UWP class 库。您将在新项目对话框中找到可移植的 class 库:
默认设置应该有效:
然后您需要从 UWP 添加对可移植库的引用,以便您可以使用它。要测试可移植库,请使用常规的非 UWP 单元测试项目:
注意 - 要完成这项工作,您需要将单元测试项目的目标框架从 4.5.2(默认)更改为 4.6。
您 运行 来自常规单元测试项目的任何单元测试都将 运行 尽可能快,因为它不需要 运行 在 AppContainer 中。我对此进行了测试,内环速度非常好。希望对您有所帮助!