所以这是上下文:
我正在使用MonoDevelop上的NUnit测试应用程序(Unity版)。
我不使用UnityTestTools。
我在C#工作
我的问题:
我正在寻找能够获得代码覆盖率的解决方案。我实际上听说过MonoCov,但我不知道如何在我的OSX上安装它。 我也在MonoDevelop中搜索这个选项,我一直看看StackOverFlow上的一些帖子,但是我找不到任何解决方案。
那么有人有解决方案吗?
答案 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的另一篇博文。