【问题标题】:TeamCity - exclude Entity Framework classes from .NET project test coverageTeamCity - 从 .NET 项目测试覆盖范围中排除实体框架类
【发布时间】:2018-03-22 16:00:32
【问题描述】:

我使用 TeamCity 作为 CI 工具。我想排除所有实体框架生成的模型。一段时间以来,我一直在尝试不同的语法和选项,但似乎没有任何效果。

我阅读了文档,阅读了我能找到的有关该主题的所有问题,但似乎仍然没有什么对我有用。

我的 App 解决方案中有一个 Repository 项目。它有两个类 - RepositoryOne.csRepositoryTwo.cs.

我在 EF 的 edmx 文件中有很多类。我不想将它们包含在代码覆盖范围内。

我尝试了只包含包含存储库的文件的东西,但没有成功。我没有尝试排除单个文件,因为它们超过一百个。

类似

+:App.Repository.RepositoryOne
+:App.Repository.RepositoryTwo
-:App.Repository.*

我知道这行不通,但只是想更好地解释一下。

【问题讨论】:

    标签: c# .net continuous-integration teamcity test-coverage


    【解决方案1】:

    如果您使用的是dotCover,那么有两种解决方案。

    第一:

    将所有 edmx 类移动到单独的项目中,并将其从程序集过滤器的覆盖范围中删除:

    -:App.Repository
    

    第二:

    使用属性过滤器从覆盖范围中删除整个命名空间:

    -:App.Repository.RepositoryOne
    

    这是一个屏幕截图,它在 TeamCity 中使用程序集和属性过滤器的外观 - 只需选择一个选项:

    更多关于dotCover:https://confluence.jetbrains.com/display/TCD10/JetBrains+dotCover

    更多示例:https://blog.jetbrains.com/dotnet/2010/12/10/coverage-with-dotcover-teamcity-mstest-nunit-or-mspec/

    【讨论】:

    • 谢谢。我无法让它以相反的方式为属性过滤器工作: -:App.Repository +App.Repository.RepositoryOne 这个想法是我想跳过除两个之外的所有文件。你觉得这可能吗?
    • 恕我直言,不可能排除文件中的所有类。要么是整个命名空间,要么是一一挑选类。如果我是你,我会为所有 EntityFramework 类(如 App.Repository.EF)创建自定义命名空间,并使用属性过滤器排除它们。
    【解决方案2】:

    当您使用dotCover 时,您可以指定一个xml 文件来描述您要分析的类或模块,或者忽略:

    <?xml version="1.0" encoding="utf-8" ?>
    <AnalyseParams>
     <TargetExecutable>c:\nunit\nunit-console.exe</TargetExecutable>
     <TargetArguments>C:\Sources\out\Debug\MyLib.dll</TargetArguments>
     <TargetWorkingDir>C:\Sources\out\Debug\</TargetWorkingDir>
     <Output>coverage.xml</Output>
     <Filters>
       <IncludeFilters>
         <FilterEntry>
            <!-- We just want to cover repository classes -->
            <ClassMask>*Repository*</ClassMask>
         </FilterEntry>
       </IncludeFilters>
       <ExcludeFilters>
         <FilterEntry>
            <!-- Do not cover Test projects -->
            <ModuleMask>*Test</ModuleMask>
         </FilterEntry>
       </ExcludeFilter>
     </Filters>
    </AnalyseParams>
    

    这是一个示例,请随意匹配您的需求。

    使用配置文件,如果您有dotCover,您将能够轻松获得本地的代码覆盖率,并且您将不依赖Teamcity来运行它。

    有关配置文件的更多信息,您可以查看 dotCover documentation 内的 Console Runner 命令。或者,运行:

    dotcover cover不带参数,获取命令行帮助,获取配置文件样本。

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2016-06-08
      • 1970-01-01
      • 2022-01-24
      相关资源
      最近更新 更多