2015-07-22 3 views
1

Так вот контекст:Покрытие кода для версии MonoDevelop Unity на Mac OSX

  • Я тестирование приложения с NUnit на MonoDevelop (версия Unity).

  • Я не использую UnityTestTools.

  • Я работаю в C#

Моей проблема:

Я ищу решение, чтобы получить мое покрытие кода. Я действительно слышал о MonoCov, но я понятия не имею, как установить его на моем OSX. Я также ищу этот вариант в MonoDevelop, и я смотрел на какой-то пост на StackOverFlow, но я не нашел решения для своего конкретного случая.

У кого-нибудь есть решение?

+0

Мы не используем «Спасибо» и «Привет» или подписи в переполнении стека. –

+0

Я изменил свой пост. – ReCoF

ответ

1

Зависит от версии Mono является фактически запуском тестов:

т.е. какой Моно версия работает тесты NUnit, если с помощью NUnit внедренной через MonoDevelop, таким образом, вы используете Mono, который работает MonoDevelop. Если ваши тесты обгоняют моно или загружают отдельный домен приложения, который используется для моноблока/консоли и т. Д.

Почему? Старые версии (3.x) включают внутренний профилировщик cov, но в более новых версиях это было заменено фильтром покрытия кода.

Чтобы использовать старый профилировщик monocov, вы добавляете опцию mono «--profile = monocov», когда «debug» запускает ваш program.exe (через nunit runner, cmdline и т. Д.). Это создаст файл "program.exe.cov", который можно загрузить в MonoCov gui.

Новые моно версии используют фильтр покрытия профилировщика «--profile = журнал: охват», который производит вывод, как следующий и не имеет графический интерфейс, как MonoCov, он производит простой текст:

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 графический интерфейс, который может быть построен из источника (обновить следующее, чтобы соответствовать вашей 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.

+0

Thx для вашего ответа, Я действительно немного помог мне, но я все еще заблокирован. После установки monocov в нужном каталоге я пытаюсь использовать эту команду: 'MONO_OPTIONS = "- профиль = monocov" NUnit-Console2 сборочно-CSharp.dll', но у меня есть эта ошибка, которая появляется: «The Профилировщик «monocov» не был найден в основном исполняемом файле и не может быть загружен из «монопрофилятора-моноков» ». Я заглянул в свой каталог monoDevelop, и у меня есть файл libmono-profiler-monocov.so, но я думаю, мне нужен файл .dylib, и я не могу его найти. Я использую MonoDevelop 4.0.1 – ReCoF

+0

Какая версия моно? mono -version: вы можете посмотреть настройку пути DYLIB перед запуском консоли устройства: http://sushihangover.github.io/mono-unable-to-find-the-ldylib-native-library/ – SushiHangover

+0

Вот что моно --version возвращает: Mono JIT компилятор версии 3.12.1 (tarball Sun Jul 5 10:37:00 PDT 2015) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc и Contributors. www.mono-project.com \t TLS: нормальный \t SIGSEGV: нормальный \t Извещение: Kqueue \t Архитектура: amd64 \t инвалидов: нет \t Разное: softdebug \t LLVM: поддерживается, не включен. \t GC: sgen – ReCoF