Kotlin Multiplatform 项目中的 javascript 代码使用什么代码覆盖工具?
What code coverage tool to use for the javascript code in a Kotlin Multiplatform project?
我可以在 JVM 端使用 jacoco,但是我可以在 Multiplatform 项目的 JS 端使用什么?
目前,还没有集成的代码覆盖工具。
但是您可以使用 karma.config.d
和 https://karma-runner.github.io/0.8/config/coverage.html.
手动实现它
注意:您只能使用 browser
目标
如何设置:
需要添加依赖项,最好是将依赖项开发到测试源集中,但开发依赖项仅在 1.4-M3 之后才有可能,因此可以将它们替换为通常的 npm
implementation(devNpm("istanbul-instrumenter-loader", "3.0.1"))
implementation(devNpm("karma-coverage-istanbul-reporter", "3.0.3"))
之后在项目文件夹的karma.config.d文件夹中创建js文件
;(function(config) { // just IIFE to protect local variabled
const path = require("path") // native Node.JS module
config.reporters.push("coverage-istanbul")
config.plugins.push("karma-coverage-istanbul-reporter")
config.webpack.module.rules.push(
{
test: /\.js$/,
use: {loader: 'istanbul-instrumenter-loader'},
include: [path.resolve(__dirname, '../module-name/kotlin/')] // here is necessary to use module-name in `build/js/packages`
}
)
config.coverageIstanbulReporter = {
reports: ["html"]
}
}(config));
它适用于 Kotlin 代码(但老实说报告是有争议的)但无论如何,它同时提供 js 和 Kt 文件的统计信息,但对于 js 表示 0%。
我创建了一个功能请求:https://youtrack.jetbrains.com/issue/KT-40460
更新:
包含结果的 HTML 文件在 build/js/packages/{$module-name}-test/coverage/index.html
中。您可以 运行 build
或 browserTest
任务。
注意:如果您使用 Windows,则必须将 include: [path.resolve(__dirname, '../module-name/kotlin/')]
更改为 include: [path.resolve(__dirname, '..\module-name\kotlin\')]
我可以在 JVM 端使用 jacoco,但是我可以在 Multiplatform 项目的 JS 端使用什么?
目前,还没有集成的代码覆盖工具。
但是您可以使用 karma.config.d
和 https://karma-runner.github.io/0.8/config/coverage.html.
注意:您只能使用 browser
目标
如何设置:
需要添加依赖项,最好是将依赖项开发到测试源集中,但开发依赖项仅在 1.4-M3 之后才有可能,因此可以将它们替换为通常的 npm
implementation(devNpm("istanbul-instrumenter-loader", "3.0.1"))
implementation(devNpm("karma-coverage-istanbul-reporter", "3.0.3"))
之后在项目文件夹的karma.config.d文件夹中创建js文件
;(function(config) { // just IIFE to protect local variabled
const path = require("path") // native Node.JS module
config.reporters.push("coverage-istanbul")
config.plugins.push("karma-coverage-istanbul-reporter")
config.webpack.module.rules.push(
{
test: /\.js$/,
use: {loader: 'istanbul-instrumenter-loader'},
include: [path.resolve(__dirname, '../module-name/kotlin/')] // here is necessary to use module-name in `build/js/packages`
}
)
config.coverageIstanbulReporter = {
reports: ["html"]
}
}(config));
它适用于 Kotlin 代码(但老实说报告是有争议的)但无论如何,它同时提供 js 和 Kt 文件的统计信息,但对于 js 表示 0%。
我创建了一个功能请求:https://youtrack.jetbrains.com/issue/KT-40460
更新:
包含结果的 HTML 文件在 build/js/packages/{$module-name}-test/coverage/index.html
中。您可以 运行 build
或 browserTest
任务。
注意:如果您使用 Windows,则必须将 include: [path.resolve(__dirname, '../module-name/kotlin/')]
更改为 include: [path.resolve(__dirname, '..\module-name\kotlin\')]