【问题标题】:Jest unit tests in Visual Studio 2019 Test ExplorerVisual Studio 2019 测试资源管理器中的 Jest 单元测试
【发布时间】:2020-09-25 20:52:33
【问题描述】:

我使用dotnet new react 创建了一个新的 ASP.NET Core React 应用程序。然后我添加了一些 Jest 单元测试,当我在命令行上运行 npm test 时,它们运行良好。

我希望能够使用测试资源管理器窗口或 ReSharper 从 Visual Studio 2019 运行测试。

首先,ReSharper 似乎只支持 Jasmine,不支持 Jest(ReSharper documentation,Feature request)。

所以我尝试使用测试资源管理器,遵循this official guide。它支持 Jest。但是,ASP.NET Core 的 React 模板不是 node.js 项目,因此测试框架等选项不可用。因此,Test Explorer 找不到任何测试。

然后我尝试使用命令vstest.console.exe MyProject.csproj /TestAdapterPath:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter" 运行测试。输出给了我一些希望:

Microsoft (R) Test Execution Command Line Tool Version 16.5.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.
No test is available in MyProject.csproj. Make sure that test 
discoverer & executors are registered and platform & framework version settings are appropriate and 
try again.

测试运行器找到至少一个测试文件(实际上我有 2 个),但它不知道它应该使用 Jest 执行器。我可以在 .csproj 文件中添加一些内容以使其工作吗?

【问题讨论】:

  • 你找到解决办法了吗?
  • 不,我什么都没有。我现在只是使用命令行。

标签: reactjs visual-studio unit-testing asp.net-core jestjs


【解决方案1】:

这就是我让.njsproj 工作的方式。我希望 .csproj 也能正常工作。首先使用TypeScript 创建一个新的Blank Node.js Console Application。也使用JavaScript 进行了测试,并且可以正常工作。

创建一个名为 tests 的文件夹并添加 JavaScript Jest UnitTest file:

未能找到“jest”包。 “jest”必须安装在项目中 本地。通过解决方案使用 npm 管理器在本地安装“jest” 资源管理器或通过 Node.js 使用“.npm install jest --save-dev” 交互式窗口。找不到“jest-editor-support”包。 “jest-editor-support”必须安装在本地项目中。 通过 npm 管理器在本地安装“jest-editor-support” 解决方案资源管理器或使用“.npm install jest-editor-support --save-dev" 通过 Node.js 交互窗口。

然后从 VS 2019 的开发人员命令提示符运行以下命令:

vstest.console.exe "C:\Users\Oscar\source\repos\NodejsConsoleApp1\NodejsConsoleApp1\NodejsConsoleApp1.njsproj" "/TestAdapterPath:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter"

安装了 jest 和 jest-editor-support,依赖类型为 Development。

完成此操作后,可以运行测试:

测试现在也将显示在测试资源管理器中:

然后将UnitTest1.js 重命名为UnitTest1.ts。您应该会看到以下错误:

安装@types/jest 作为开发依赖,它应该可以工作:

我不必指定这一点,但如果出现问题,请检查项目属性并设置 JavaScript 单元测试值。

还要检查测试文件的属性,如果通过 GUI 添加这些值默认情况下应该是正确的。

【讨论】:

  • 遗憾的是,这不适用于 csproj,因为它假定 Javascript 的根目录是项目的根目录,即使我将测试适配器的源代码更改为在正确的位置查找,我也会得到一个一堆东​​西默默地失败了。
  • 这确实在 VS 2022 中继续工作,尽管您从 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\TestPlatform 运行命令并且 TestAdapterPath 是 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\Microsoft\NodeJsTools\TestAdapter
猜你喜欢
  • 2020-06-03
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2018-05-03
  • 2016-01-06
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多