PyCharm 2025.3 Help

Karma

开始之前

  1. 请确保您的计算机上已安装 Node.js

  2. 请确保在 设置 | 插件 页面、 已安装 选项卡上启用了所需的 JavaScript and TypeScriptKarma 插件。 有关详细信息,请参阅 管理插件

安装 Karma

除了 Karma 本身,您还需要其他包(插件),例如 karma-jasminejasmine-core。 请参阅 Karma 官方网站 了解更多信息。

  1. 打开内置的 终端Alt+F12)。

  2. 输入以下命令之一:

    • 如果已在 package.json 中定义了 Karma 和所有必需的插件,请运行 npm install

    • 要将 Karma 和插件安装为 开发依赖项

      npm install --save-dev karma npm install --save-dev <karma_plugin> <another_karma_plugin>

生成 Karma 配置文件

Karma 测试根据一个 karma.conf.js 配置文件运行,该文件以交互模式生成。 如果您的项目中已经有 karma.conf.js ,请跳过此步骤。 有关 Karma 配置的更多信息,请参阅 Karma 官方网站

创建 Karma 配置文件

  1. 打开 终端 ,根据您的操作系统输入以下命令之一以启动 karma.conf.js 生成向导:

    • 对于 macOS 和 Linux: ./node_modules/karma/bin/karma init

    • 对于 Windows:

      npm install -g karma-cli karma init
  2. 回答向导中的问题,指定要使用的测试框架以及要自动捕获的浏览器。

    另请参见 Karma Files: Pattern matching

运行测试

使用 PyCharm,您可以直接从编辑器快速运行单个 Karma 测试,或者创建一个运行/调试配置来执行部分或全部测试。

从编辑器运行单个测试

  • 点击 运行按钮重新运行按钮 在左侧边栏中,并从列表中选择 运行 <test_name>

    您还可以直接在编辑器中查看测试是否通过或失败,这得益于装订区域中的 测试状态 图标 测试通过测试失败

创建 Karma 运行配置

  1. 打开 Run/Debug Configuration 对话框(运行 | 编辑配置 在主菜单中),在左侧窗格中点击 添加按钮 ,并从列表中选择 Karma运行/调试配置:Karma 对话框打开。

  2. 指定要使用的 Node.js 运行时。

    如果您选择 项目 别名, PyCharm 将自动使用 JavaScript 运行时 页面中 Node.js 运行时 字段的项目默认解释器。 在大多数情况下, PyCharm 会检测项目默认运行时并自行填写该字段。

    您还可以选择另一个已配置的本地或远程解释器,或点击 浏览按钮 并配置一个新的解释器。

    可选地指定要传递给 Node.js 的 Node.js 特定的选项参数环境变量

  3. 指定 karma.conf.js 的路径。

  4. 指定要使用的 karma 包。 可以是以下之一:

    • Karma 安装主目录 /npm/node_modules/karma 。 如果您通过 Node 包管理器 常规安装了 Karma ,PyCharm 会自动检测到 Karma 安装主目录。

    • node_modules/@angular/cli 的路径。

    • 如果您使用 Nx ,则到 node_modules/nx 的路径。

    Karma 运行/调试配置 - 选择 Karma 包
  5. 指定应用程序的工作目录。 默认情况下, 工作目录 字段显示项目根文件夹。 若要更改此预定义设置,请指定目标文件夹的路径。

  6. 指定要运行的测试。 这可以是特定的测试或套件、整个测试文件,或包含测试文件的文件夹。

  7. 可选地,指定您希望传递给 Karma 的命令行选项,以覆盖 karma.conf.js 配置文件中的默认设置。

    例如,要在 Headless Chrome 中运行或调试测试,请在 Karma 选项 字段中键入 --browsers ChromeHeadless。 有关详细信息,请参阅 使用 Headless Chrome 进行自动化测试

    要查看所有可用的 CLI 选项,请在 终端 Alt+F12 中键入 karma start --help

通过运行配置运行测试

  1. 在配置列表中选择 Karma 运行/调试配置,然后在列表或工具栏中点击 运行图标 &#xa0;。

  2. 监控测试执行并在 测试运行器 选项卡的 运行 工具窗口中分析测试结果。 有关详细信息,请参阅 探索测试结果

重新运行失败的测试

  • 在测试结果工具栏上点击 重新运行失败的测试图标。 PyCharm 将执行上一次会话中失败的所有测试。

    重新运行失败的 Karma 测试
  • 要重新运行特定失败的测试,请在其上下文菜单中选择 运行 <测试名称>

    重新运行单个测试
  • 重新运行上一次会话中的所有测试,请点击测试结果工具栏上的 重新运行按钮 或按下 Ctrl+F5

  • 更改相关源代码后要自动重新运行测试,请按测试结果工具栏上的 自动重新运行切换按钮

有关详细信息,请参阅 重新运行测试

导航

使用 PyCharm,您可以在文件与相关测试文件之间跳转,或从 测试运行器选项卡 中的测试结果跳转到该测试。

  • 要在测试与其被测对象之间相互跳转,请在编辑器中打开该文件,并从上下文菜单中选择 转到 | 测试(S)转到 | 测试对象 ,或直接按 Ctrl+Shift+T

  • 要从测试结果跳转到测试定义,请在 测试运行器 选项卡中双击测试名称,或从上下文菜单中选择 跳转到源 ,或直接按 F4。 测试文件将在编辑器中打开,插入符号定位于测试定义处。

  • 对于失败的测试,PyCharm 会根据堆栈跟踪将您定位到测试中的失败行。 如果堆栈跟踪中没有确切的行,PyCharm 会将您定位到测试定义处。

调试测试

使用 PyCharm,您可以直接从编辑器中快速开始调试单个 Karma 测试,或创建一个运行/调试配置来调试部分或全部测试。

从编辑器开始调试单个测试

  1. 在测试中 设置断点

  2. 点击 运行按钮重新运行按钮 并从列表中选择 调试 <test_name>

通过运行/调试配置启动测试调试

  1. 设置断点 (根据需要)。

  2. 创建 Karma 运行/调试配置, 如上所述

  3. 在配置列表中选择 Karma 运行/调试配置,然后在列表或工具栏中点击 调试图标 &#xa0;。

  4. 在打开的 调试工具窗口 中,按常规方式进行操作: 逐步执行程序停止并恢复程序执行、 在暂停时进行检查 、查看调用堆栈和变量、设置监视、对变量求值、 查看实际 HTML DOM ,等等。

监控代码覆盖率

使用 PyCharm,您还可以监控代码有多少 通过 Karma 测试覆盖。 PyCharm 会在专用的 覆盖率 工具窗口中显示这些统计信息,并在编辑器和 项目 工具窗口中直观地标记已覆盖和未覆盖的行 Alt+1。 要监控覆盖率,您需要安装 karma-coverage 包并更新 karma.conf.js

安装 karma-coverage

  • 在内置的 终端Alt+F12 )中,键入:

    npm install &#xa0;--save-dev karma-coverage

将 karma-coverage 定义添加到配置文件

  1. 在编辑器中打开 karma.conf.js

  2. 找到 reporters 定义,并将 coverage 添加到该值列表中,格式如下:

    reporters: ['progress', 'coverage']
  3. 添加 preprocessors 定义,并按以下格式指定覆盖范围:

    preprocessors: {'**/*.js': ['coverage']}

带覆盖率运行测试

  1. 创建 Karma 运行/调试配置, 如上所述

  2. 在配置列表中选择 Karma 运行/调试配置,然后在列表或工具栏中点击 带覆盖率运行图标 &#xa0;。

    或者,使用编辑器中的测试图标快速运行特定的套件或带覆盖率的测试。

    从编辑器带覆盖率运行 Karma 测试
  3. 覆盖率 工具窗口中监视代码覆盖率。

    每次运行 Karma 测试时,都会在磁盘上实际生成覆盖率报告。 可以在配置文件中配置覆盖率报告的格式,例如:

    // karma.conf.js module.exports = function(config) { config.set({ ... // optionally, configure the reporter coverageReporter: { type : 'html', dir : 'coverage/' } ... });};

    以下 type 值可接受:

    • html 会生成一组包含注释源代码的 HTML 文件。

    • lcovonly 会生成一个 lcov.info 文件。

    • lcov 会生成 HTML + .lcov 文件。 默认采用此格式。

    • cobertura 会生成一个 cobertura-coverage.xml 文件,便于与 Hudson 集成。

    • text-summary 会生成精简的文本覆盖率摘要,通常输出到控制台。

    • text 会生成包含所有文件覆盖率的详细文本表。

最后修改日期: 2025年 12月 2日