首页 > 解决方案 > Visual Studio 2019 测试资源管理器中的 Jest 单元测试

问题描述

我使用dotnet new react. npm test然后我添加了一些 Jest 单元测试,当我在命令行上运行时它们运行良好。

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

首先,ReSharper 似乎只支持 Jasmine 而不是 Jest(ReSharper 文档功能请求)。

所以我尝试使用测试资源管理器,遵循这个官方指南。它支持 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 文件中添加一些东西以使其工作吗?

标签: reactjsvisual-studiounit-testingasp.net-corejestjs

解决方案


这就是我开始.njsproj工作的方式。我也希望能出.csproj作品。首先创建一个新Blank Node.js Console ApplicationTypeScript. 也经过测试JavaScript并且可以正常工作。

在此处输入图像描述

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

在此处输入图像描述

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

然后从 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"

在此处输入图像描述

已安装jestjest-editor-support具有依赖类型Development

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

然后重命名UnitTest1.jsUnitTest1.ts. 您应该看到以下错误:

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述


推荐阅读