【问题标题】:Code Coverage for MonoDevelop Unity version on Mac OSXMac OSX 上 MonoDevelop Unity 版本的代码覆盖率
【发布时间】:2015-07-22 08:59:06
【问题描述】:

所以这里是上下文:

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

  • 我不使用 UnityTestTools。

  • 我正在使用 C# 工作

我的问题:

我正在寻找一种解决方案来获得我的代码覆盖率。我实际上听说过 MonoCov,但我不知道如何在我的 OSX 上安装它。 我还在 MonoDevelop 中搜索此选项,并查看了 StackOverFlow 上的一些帖子,但没有找到适合我的特定情况的任何解决方案。

那么有人有解决办法吗?

【问题讨论】:

  • 我们不在 Stack Overflow 上使用“Thanks”和“Hi”或签名。

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


【解决方案1】:

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

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

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

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

较新的单声道版本使用分析器覆盖过滤器“--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 分析器“应该”工作并生成 .cov 文件。此时,您只需要可以从源代码构建的 MonoCov Gui(更新以下内容以匹配您的 OS-X 环境):

# 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 的另一篇博文。

【讨论】:

  • 感谢您的回答,我实际上帮助了我一点,但我仍然被阻止。安装 monocov 后,在正确的目录中,我尝试使用此命令:MONO_OPTIONS="--profile=monocov" nunit-console2 Assembly-CSharp.dll 但出现此错误:“在主可执行文件中找不到 'monocov' 分析器,也无法从 'mono-profiler 加载它-monocov'。”。我查看了我的 monoDevelop 目录,我有 libmono-profiler-monocov.so 文件,但我想我需要 .dylib 文件,但我找不到它。我正在使用 MonoDevelop 4.0.1
  • 那是哪个版本的单声道? mono --version :您可以在运行单元控制台之前查看设置 DYLIB 路径:sushihangover.github.io/…
  • 这里是 mono --version 返回的内容:Mono JIT 编译器版本 3.12.1(tarball Sun Jul 5 10:37:00 PDT 2015)版权所有 (C) 2002-2014 Novell, Inc, Xamarin Inc和贡献者。 www.mono-project.com TLS:正常 SIGSEGV:正常 通知:kqueue 架构:amd64 已禁用:无 杂项:softdebug LLVM:支持,未启用。 GC:sgen
  • "Architecture: amd64" 64bit build,所以检查你拥有的“libmono-profiler-monocov.so”,如果它是 32 位或 64 位......只需使用 'file' 就可以了跨度>
猜你喜欢
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2014-02-21
  • 2012-06-30
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多