4

我正在尝试使用 monocov 来计算单元测试覆盖率并遇到问题,谷歌已经筋疲力尽,但似乎没有相关答案可用。

我按照这个[问题]中显示的提示成功下载并构建了monocov:Can't get monocov to compile (Mac OS x 10.7.4)

曾尝试将 monocov 与 nunit-console2 一起使用,如http://www.mono-project.com/Code_Coverage所示

这是我的命令:

$ MONO_OPTIONS="--profile=monocov:+/Users/myaccount/MyProject/MonoForm/MonoForm.Common.Generic/bin/Release" nunit-console2 /Users/myaccount/MyProject/MonoForm/MonoForm.Common.UnitTests/bin/Release/MonoForm.Common.UnitTests.dll

我得到的输出为:

NUnit version 2.4.8
Copyright(C) 2002-2007 Charlie Poole.
Copyright(C) 2002-2004 James W. Newkirk, Michael C.Two, Alexei A. Vorontsov.
Copyright(C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment -
   OS Version: Unix 11.4.0.0
  CLR Version: 2.0.50727.1433 ( 2.10.9(tarball Mon May 7 20:25:51 EDT 2012) )

......
Tests run: 6, Failures: 0, Not run: 0, Time: 0.052 seconds.

$

我得到一个 TestResult.xml 是 nunit-console2 的通用输出文件,并且没有任何错误消息,也没有由于 monocov 生成的 .cov 文件。当前卡住并且不知道出了什么问题。

不确定任何关于 monocov 的专家都可以在这里阐明一些观点。谢谢!

4

1 回答 1

1

好吧,Xamarin 似乎已经删除了“内部”cov 分析器,并且 monocov 不会产生任何输出(除了 mono 实际加载共享库,没有调用任何函数),因为 api 已更改。

他们在核心日志分析器中添加了代码覆盖率过滤器(2015 年 4 月 7 日),而我找不到任何已发布的文档(?)。启用它很容易。

--profile=log:coverage

coverage             enable collection of code coverage data
covfilter=ASSEMBLY   add an assembly to the code coverage filters
                     add a + to include the assembly or a - to exclude it
                     filter=-mscorlib
covfilter-file=FILE  use FILE to generate the list of assemblies to be filtered

关于 cov 删除和日志覆盖过滤器添加的 Git 日志信息:

commit 16570265149730ec6a4760cc0fa34decc1a9d981
Author: Alex Rønne Petersen <alexrp@xamarin.com>
Date:   Tue Apr 7 14:51:27 2015 +0200
        [profiler] Remove old mono-cov profiler.
        We're replacing this with coverage support in the log profiler.

commit e91693fbb87f687a2fdb5a495c945c1872b3066c
Author: iain holmes <iain@xamarin.com>
Date:   Fri Feb 27 10:13:54 2015 +0000
        [cov] Install a coverage filter
于 2015-06-15T22:30:00.450 回答