目前,我正在使用Mac上的Xamarin Studio开发Xamarin项目。我创建了一个NUnit测试项目来测试核心PCL 4.5库。在命令行上:
mono --debug --profile=log:report,coverage nunit3-console.exe bin/Debug/MyProject.Core.Tests.dll
和我对输出的覆盖总结:
覆盖范围摘要:nunit.engine (/Users/Stam/Desktop/NUnit/nunit.engine.dll)39%覆盖(656种方法) - 258覆盖)NUnit.Engine.Services.ResultService 100%覆盖(4种方法 - 4覆盖)NUnit.Engine.Extensibility.ExtensionPoint 25% 覆盖(12种方法 - 3种覆盖) NUnit.Engine.Services.TestFilterService 50%覆盖(2种方法 - 1 覆盖)NUnit.Engine.Agents.TestAgent 50%覆盖(10种方法 - 5 覆盖)NUnit.Engine.Internal.DirectoryFinder 75%覆盖(4 方法 - 3覆盖)NUnit.Engine.Services.TestAgency 88%覆盖 (17种方法 - 涵盖15种)NUnit.Engine.Internal.SettingsStore 75% 覆盖(4种方法 - 3种覆盖) .....这里有更多的nunit集会
这里没有包含到dll中的程序集。
有没有办法做到这一点?
如果没有,我可以在Mac上使用其他非商业测试代码覆盖工具吗?
答案 0 :(得分:2)
您需要通过以下方式在测试程序集中运行nunit3-console
:
--process=PROCESS
或
--inprocess
注意:这是删除所有NUnit程序集和包含[Test]
的测试程序集,因此输出只包含用户代码
mono \
--debug \
--profile=log:coverage,onlycoverage,\
covfilter=-nunit3-console,\
covfilter=-nunit.framework,\
covfilter=-Mono.Cecil,\
covfilter=-NUnit.Engine,\
covfilter=-NUnit.Core,\
covfilter=-nunit.core,\
covfilter=-nunit.engine,\
covfilter=-nunit.v2.driver,\
covfilter=-TestAssembly \
packages/NUnit.ConsoleRunner.3.5.0/tools/nunit3-console.exe \
--noh \
--inprocess \
CodeCoverage/bin/Debug/TestAssembly.dll
>>mprof-report --reports=coverage output.mlpd
Coverage Summary:
MyAssembly (/Users/sushi/Projects/CodeCoverage/CodeCoverage/bin/Debug/MyAssembly.dll) 50% covered (2 methods - 1 covered)
MyAssembly.MyClass 50% covered (2 methods - 1 covered)