Mac OSX上MonoDevelop Unity版的代码覆盖率

时间:2015-07-22 08:59:07

标签: c# unity3d code-coverage monodevelop osx-yosemite

所以这是上下文:

  
      
  • 我正在使用MonoDevelop上的NUnit测试应用程序(Unity版)。

  •   
  • 我不使用UnityTestTools。

  •   
  • 我在C#工作

  •   

我的问题:

  

我正在寻找能够获得代码覆盖率的解决方案。我实际上听说过MonoCov,但我不知道如何在我的OSX上安装它。   我也在MonoDevelop中搜索这个选项,我一直看看StackOverFlow上的一些帖子,但是我找不到任何解决方案。

那么有人有解决方案吗?

1 个答案:

答案 0 :(得分:1)

取决于哪个版本的Mono 实际运行测试

即。哪个Mono版本正在运行你的nunit测试,如果使用通过MonoDevelop嵌入的nunit,那么你正在使用运行MonoDevelop的Mono。如果你的测试是单声道或加载一个单独的应用程序域,单声道用于单位运行/控制台等...

为什么呢?旧版本(3.x)包含内部cov分析器,但在较新版本中,代码覆盖率过滤器已经替换

要使用旧的monocov分析器,请添加单声道选项" - profile = monocov"什么时候调试'运行你的program.exe(通过nunit runner,cmdline等...)。这将生成一个" program.exe.cov"可以在MonoCov gui中加载的文件。

较新的单声道版本使用探查器覆盖过滤器" - profile = log:coverage"产生如下的输出并且没有像MonoCov那样的gui,它产生纯文本:

Coverage Summary:
    xCorFlags (/Users/administrator/code/corflags/xCorFlags.exe) 26% covered (42 methods - 11 covered)
        <Module> ?% covered (0 methods - 1 covered)
        CorFlags.CorFlagsSettings 25% covered (4 methods - 1 covered)
        CorFlags.MainClass 50% covered (2 methods - 1 covered)
        CorFlags.CommandLineParser 40% covered (20 methods - 8 covered)

免责声明:这是我自己的博客post

如果您使用的是Mono的旧版本(由于Unity?,他们现在正在使用哪个版本?),那么movcov探查器应该&#39;工作并生成.cov文件。那时你只需要可以从源构建的MonoCov Gui(更新以下内容以匹配你的OS-X env):

# Clone the MonoCov repo
git clone https://github.com/mono/monocov.git MonoCov
cd MonoCov
# A really old version of cecil and it not available as a nuget
curl http://go-mono.com/archive/cecil/cecil-0.6-bin.zip -o cecil-0.6-bin.zip
unzip cecil-0.6-bin.zip
# Make sure configure can find the Mono.Option source file
export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/4.0.3/lib:/Library/Frameworks/Mono.framework/Versions/4.0.3/lib/pkgconfig:$PKG_CONFIG_PATH
export 
# Config to install to users home dir
/configure --cecil=$PWD/monocov/cecil-0.6/Mono.Cecil.dll --prefix $HOME/monocov
# Fix Makefile, gmcs no longer exists under Mono 4.x and Makefile is hard coded
sed -i.bak s/gmcs/mcs/g Makefile
# Pass -m32 to make since OS-X Mono framework is still 32-bit
CC="cc -m32" make
# Install does not properly create bin dir, do it before the first install
mkdir $HOME/monocov/bin
# Install..
make install

免责声明:这是来自mine的另一篇博文。