从封面的覆盖率报告中排除 AspNetCoreGenerateDocument 类

问题描述 投票:0回答:2

我有这个类AspNetCoreGenerateDocument.Views_Users__AddOrUpdateUser出现在Views文件夹中每个视图的代码覆盖率结果中,

示例: AspNetCoreGenerateDocument.Views_Users__AddOrUpdateUser AspNetCoreGenerateDocument.Views_Users__GetUser 等等...

组装解决方案.Web AspNetCore生成文档

我想使用 .runsettings 文件排除此文件夹:

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
    <DataCollectionRunSettings>
        <DataCollectors>
            <DataCollector friendlyName="XPlat code coverage">
                <Configuration>
                    <!-- Globbing filter -->
                    <ExcludeByFile>**/Solution.Web/Views/*.cshtml</ExcludeByFile>
                    <IncludeTestAssembly>false</IncludeTestAssembly>
                    <DeterministicReport>false</DeterministicReport>
                </Configuration>
            </DataCollector>
        </DataCollectors>
    </DataCollectionRunSettings>
</RunSettings>

这就是我想要的结果:这张图片来自 dotCover 它可以轻松创建过滤器

c# unit-testing code-coverage xunit coverlet
2个回答
0
投票

我已经能够从源中排除所有 AspNetCoreGenerateDocument 文件,不包括预编译视图 (cshtml):

<?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>
                            <Include>
                                <ModulePath>.*whatever.dll</ModulePath>
                                <ModulePath>.*whatever2.dll</ModulePath>
                            </Include>
                        </ModulePaths>

                        <Sources>
                            <Exclude>
                                <Source>.*cshtml.*</Source> 
                            </Exclude>
                        </Sources>
                        
                        <!-- We recommend you do not change the following values: -->

                        <!-- Set this to True to collect coverage information for functions marked with the "SecuritySafeCritical" attribute. Instead of writing directly into a memory location from such functions, code coverage inserts a probe that redirects to another function, which in turns writes into memory. -->
                        <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
                        <!-- When set to True, collects coverage information from child processes that are launched with low-level ACLs, for example, UWP apps. -->
                        <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
                        <!-- When set to True, collects coverage information from child processes that are launched by test or production code. -->
                        <CollectFromChildProcesses>True</CollectFromChildProcesses>
                        <!-- When set to True, restarts the IIS process and collects coverage information from it. -->
                        <CollectAspDotNet>False</CollectAspDotNet>
                        <!-- When set to True, static native instrumentation will be enabled. -->
                        <EnableStaticNativeInstrumentation>True</EnableStaticNativeInstrumentation>
                        <!-- When set to True, dynamic native instrumentation will be enabled. -->
                        <EnableDynamicNativeInstrumentation>True</EnableDynamicNativeInstrumentation>
                        <!-- When set to True, instrumented binaries on disk are removed and original files are restored. -->
                        <EnableStaticNativeInstrumentationRestore>True</EnableStaticNativeInstrumentationRestore>

                    </CodeCoverage>
                </Configuration>
            </DataCollector>
        </DataCollectors>
    </DataCollectionRunSettings>
</RunSettings>

.runsettings 文档的其余部分与文档相同:doc


0
投票

一年半后,正确答案是......

<ExcludeByFile>**/*.cshtml</ExcludeByFile>

所以@KA-Yasso 代码部分有效。
它不会排除 Views 文件夹中的所有 .cshtml 文件。

它仅排除 Views 文件夹根级别的 .cshtml 文件,例如 _ViewStart.cshtml
它不会排除他实际上想要排除的文件,例如 Views/Users/AddOrUpdateUser.cshtml

@red 的答案不适用于封面,它不起作用,.runsettings.xml 文件结构不同。

排除所有 .cshtml 文件

<ExcludeByFile>**/*.cshtml</ExcludeByFile>

从 MainApp.MVC/Views 文件夹中排除所有 .cshtml 文件

<ExcludeByFile>**/MainApp.MVC/Views/*.cshtml,**/MainApp.MVC/Views/**/*.cshtml</ExcludeByFile>

从区域视图文件夹中排除所有 .cshtml 文件

<ExcludeByFile>**/MainApp.MVC/Areas/Common/Views/*.cshtml,**/MainApp.MVC/Common/Views/**/*.cshtml</ExcludeByFile>

文档:
注意事项:
  • 仅应用第一个 xml 元素。
  • 您可以添加移动,但它们会被忽略。
  • 相反,您需要使用“,”连接不同的 ExcludeByFile 模式。
© www.soinside.com 2019 - 2024. All rights reserved.