似乎一旦您使用代码覆盖率运行测试,就无法阻止未来的测试运行显示内嵌代码覆盖率。
即使我正常运行测试(没有覆盖),覆盖仍然存在。
如果我从工具菜单中选择“隐藏覆盖数据”,它只会隐藏覆盖结果菜单。
如何让它停止在我的源文件中显示内嵌覆盖率?
Cobertura 是否已知用于 JavaScript 代码库中的代码覆盖率? http://cobertura.github.io/cobertura/说它是用于 Java 代码库的。
我有一个在 Visual Studio Team Services(以前称为 Visual Studio Online)上运行的构建。我想从代码覆盖率计算中排除一些程序集。基于我从 许多 来源阅读的格式。我创建了一个 .runsettings 文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage"
uri="datacollector://Microsoft/CodeCoverage/2.0"
assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>*AWSSDK*</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误:
正在开始测试执行,请稍候...错误:System.InvalidOperationException:无法在流程流上混合同步和异步操作。在System.Diagnostics.Process.get_StandardError()在Microsoft.VisualStudio.Coverage.Vanguard.Wait()在Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串outputName,DataCollectionContext上下文)在Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollectorImpl.StartVanguard( DataCollectionContext 上下文)位于 Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)位于 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)位于 System.EventHandler`1.Invoke(对象发送者,TEventArgs) e) 在 WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e) 在 WEX.TestExecution.DataCollectorTestMode.Initialize(ITestModeSettings settings, ICallbackRegistrar callbackRegistrar) 信息:此外,如果安装了测试发现器和执行器,您可以尝试指定“/UseVsixExtensions”命令在计算机上作为 vsix 扩展,并且您的安装支持 vsix 扩展。示例:vstest.console.exe myTests.dll /UseVsixExtensions:true VSTest 测试运行失败,退出代码:1
是的,一些测试正在使用 async/await。相同的 .runsettings 文件在 Visual Studio 2015 中工作正常。如果我按照建议操作并添加以下选项:/UseVsixExtensions:true,结果是相同的。我怎样才能解决这个问题?
我正在尝试使用 angular cli 生成覆盖率报告。但是我不断收到以下错误。我不太确定这是 cli 错误还是 Karma.conf 的问题?ng test/npm test运行良好... 所以与代码覆盖选项有关吗?
Error: Module build failed: SyntaxError: 'import' and 'export' may appear only with 'sourceType: module' (3:0)
at Parser.pp$5.raise (C:\Development\source\\node_modules\babylon\lib\index.js:4443:13)
at Parser.pp$1.parseStatement (C:\Development\source\\node_modules\babylon\lib\index.js:1875:16)
at Parser.parseStatement (C:\Development\source\\node_modules\babylon\lib\index.js:5795:22)
at Parser.pp$1.parseBlockBody (C:\Development\source\\node_modules\babylon\lib\index.js:2262:21)
at Parser.pp$1.parseTopLevel (C:\Development\source\\node_modules\babylon\lib\index.js:1772:8)
at Parser.parse (C:\Development\source\\node_modules\babylon\lib\index.js:1667:17)
at Object.parse (C:\Development\source\\node_modules\babylon\lib\index.js:7163:37)
at Instrumenter.instrumentSync (C:\Development\source\\node_modules\istanbul-lib-instrument\dist\instrumenter.js:121:31)
at Instrumenter.instrument (C:\Development\source\\node_modules\istanbul-lib-instrument\dist\instrumenter.js:176:32)
at Object.module.exports (C:\Development\source\\node_modules\istanbul-instrumenter-loader\index.js:25:25),Module build failed: SyntaxError: 'import
' and 'export' may appear only with 'sourceType: module' (2:0)
at Parser.pp$5.raise (C:\Development\source\\node_modules\babylon\lib\index.js:4443:13)
at Parser.pp$1.parseStatement (C:\Development\source\\node_modules\babylon\lib\index.js:1875:16) …Run Code Online (Sandbox Code Playgroud) 我使用unittest2与覆盖其中还包含我的项目在虚拟环境中。
当我运行时coverage report -m,报告显示来自lib/python3.5/site-packages/ 的其他几个文件。
因为有几个文件要排除,每次我想运行测试并查看覆盖率报告时,尝试从命令行排除它们是很乏味的。这就是我选择依赖配置文件的原因。
该文件说我应该在这样做.coveragerc文件。但是我看不到它。当我运行pip show coverage然后ls -a path_to_coverage_directory我看到config.py文件时。因此,通过查看选项在哪里--omit并将其更改为从测试和报告中排除了一个文件:
self._omit = None
Run Code Online (Sandbox Code Playgroud)
到:
self._omit = ['/home/begueradj/development/app/lib/python3.5/site-packages/unittest2/case.py']
Run Code Online (Sandbox Code Playgroud)
我保存了配置文件并再次运行测试以及覆盖率报告:我看到这个文件没有被排除。
我错过了什么?你如何解决这个问题?
我曾经Docker-dind构建和测试我的 python 代码。我混淆了如何在gitlab-ci以下两个选项之间运行覆盖。
1) Gitlab 本身有覆盖范围[这里]
2)我遵循python的覆盖教程并使用以下内容创建自己的覆盖范围:
coverage:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE python -m coverage run tests/tests.py
- docker run $CONTAINER_TEST_IMAGE python -m coverage report -m
Run Code Online (Sandbox Code Playgroud)
当 gitlab 抛出异常时No data to report.:
我猜coverage report命令无法访问/查找.coverage容器中的文件。
所以我的问题是coverage在这种情况下运行的优雅方式是什么?
continuous-integration code-coverage gitlab docker gitlab-ci
我在 VSTS 中有一个构建,如下所示:
您可以从屏幕截图中看到“测试并生成代码覆盖率”的测试步骤。它使用这个命令:
/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)\TestResults\Coverage\coverage
这允许生成代码覆盖率报告。我已经使用我定义的特征(例如集成或单元)将“类别”添加到我的 xUnit 测试中,以允许我在构建/发布期间过滤测试。示例是:
using System;
using System.Collections.Generic;
using System.Linq;
using Xunit.Abstractions;
using Xunit.Sdk;
/// <summary>
/// Decorates a test as a Unit Test, so that it runs in Continuous Integration builds.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class IsUnitAttribute : AICategoryAttribute
{
/// <summary>
/// Initializes a new instance of <see cref="IsUnitAttribute"/>
/// </summary>
public IsUnitAttribute() : base("Unit") { }
}
/// <summary>
/// Decorates a test as an Integration Test, so …Run Code Online (Sandbox Code Playgroud) testing code-coverage xunit.net reportgenerator azure-pipelines-build-task
目前我正在使用 Visual Studio 2017 社区版。以前我一直在使用 Visual Studio 2013 Ultimate,并且有一个选项可用于在下面生成代码覆盖率结果Test>Analyze Code Coverage>All Test
在 Visual 2017 Community Edition 中,没有可用于分析代码覆盖率的选项,该选项仅可用于Test>Windows>Code Coverage results.
如何在 Visual Studio 2017 社区中找到分析代码覆盖率?
我想弄清楚如何将我的笑话代码覆盖率报告上传到 codecov。从那里文档:
bash <(curl -s https://codecov.io/bash) -t token
Run Code Online (Sandbox Code Playgroud)
所以我尝试从云构建步骤运行 bash 脚本,如下所示 cloudbuild.yaml
steps:
- name: node:10.15.1
entrypoint: npm
args: ["install"]
- name: node:10.15.1
entrypoint: npm
args: ["test", "--", "--coverage"]
- name: 'gcr.io/cloud-builders/curl'
entrypoint: bash
args: ['<(curl -s https://codecov.io/bash)', '-t', '$_CODECOV_TOKEN']
- name: node:10.15.1
entrypoint: npm
args: ["run", "build:production"]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Step #2: bash: <(curl -s https://codecov.io/bash): No such file or directory
Run Code Online (Sandbox Code Playgroud)
显然是因为<(curl -s https://codecov.io/bash)在我希望它被执行时被解释为字符串。
编辑:
我已将构建步骤更改为以下内容:
- name: "gcr.io/cloud-builders/curl"
entrypoint: bash
args: ["./scripts/codecov-upload.bash", "$_CODECOV_TOKEN"]
Run Code Online (Sandbox Code Playgroud)
并添加了一个文件 codecov-upload.bash
bash …Run Code Online (Sandbox Code Playgroud) code-coverage ×10
docker ×2
angular ×1
angular-cli ×1
azure-devops ×1
cobertura ×1
config ×1
gcov ×1
gcovr ×1
gitlab ×1
gitlab-ci ×1
javascript ×1
jestjs ×1
macos ×1
mstest ×1
phpstorm ×1
python ×1
testing ×1
typescript ×1
unit-testing ×1
xunit.net ×1
yaml ×1