TeamCity - 从.NET项目测试覆盖范围中排除实体框架类

时间:2018-03-22 16:00:32

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

我使用TeamCity作为CI工具。我想排除所有Entity Framework生成的模型。我已经尝试了一段时间不同的语法和选项,似乎没有什么可以做到的。

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

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

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

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

类似

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

我知道这不起作用,只是想更好地解释。

2 个答案:

答案 0 :(得分:1)

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

<强>首先

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

-:App.Repository

<强>第二

使用属性过滤器从coverage中删除整个命名空间:

-:App.Repository.RepositoryOne

以下是使用汇编和属性过滤器在TeamCity中看起来如何的截图 - 只需选择一个选项:

TeamCity assemmbly and attribute filters

有关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/

答案 1 :(得分:0)

当您使用<ol class="action-item"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> <li>item 6</li> </ol>时,您可以指定一个xml文件来描述您要分析的类或模块,或忽略:

dotCover

这是一个样本,随时可以满足您的需求。

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

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

不带参数的

<?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> ,以获取命令行的帮助,并获取配置文件的示例。