使用mono / nunit-console / 4在Mac OS X控制台上运行测试
我安装了Max OS X 10.11.1,上面装有Xamarin。 我编写了简单的测试类,只是为了测试在Mac OS X和Ubuntu上运行的Nunit测试,类实际上有一个返回字符串的方法:
using System; namespace testing_project { public class EmptyClass { public EmptyClass () { } static void Main(string[] args) { } public string helloWorld() { return "Hello World!"; } } }
我有一个NUnit类来测试我的EmptyClass:
using System; using NUnit.Framework; namespace testing_project { [TestFixture] public class EmptyClassTest { [Test] public void testHelloWorld() { EmptyClass empty = new EmptyClass(); Assert.AreEqual ("Hello World!", empty.helloWorld ()); } } }
当我在Xamarin工作室运行时,测试通过就好了。
如何在CLI上实现此目的?
Mono包含一个NUnit的runner / console(版本2.4.8)的安装,它通过名为nunit-console
的shell脚本调用:
cat `which nunit-console` #!/bin/sh exec /Library/Frameworks/Mono.framework/Versions/4.2.1/bin/mono --debug $MONO_OPTIONS /Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5/nunit-console.exe "$@"
因此,要从CLI运行测试,您可以调用NUnit的测试.csproj
或CIL / Assembly:
MONO_IOMAP=all nunit-console nunit-lib/nunit-lib.csproj
要么
nunit-console nunit-lib/bin/Debug/nunit-lib.dll
注意 :在解析.csproj文件并创建预期的CIL /程序集位置时,NUnit控制台2.4.x由于硬编码的Windows样式目录分隔符而MONO_IOMAP
,请使用MONO_IOMAP
来解决它。 这在NUnit runner 3.0中不是问题。
例:
nunit-console nunit-lib/bin/Debug/nunit-lib.dll NUnit version 2.4.8 Copyright (C) 2002-2007 Charlie Poole. Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. Copyright (C) 2000-2002 Philip Craig. All Rights Reserved. Runtime Environment - OS Version: Unix 15.0.0.0 CLR Version: 4.0.30319.17020 ( 4.2.1 (explicit/8862921 Thu Oct 29 17:09:16 EDT 2015) ) .F Tests run: 1, Failures: 1, Not run: 0, Time: 0.687 seconds Test Case Failures: 1) nunitlib.Test.TestCase : Expected string length 8 but was 5. Strings differ at index 0. Expected: "Overflow" But was: "Stack" -----------^
nunit-console –help
NUnit version 2.4.8 Copyright (C) 2002-2007 Charlie Poole. Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. Copyright (C) 2000-2002 Philip Craig. All Rights Reserved. Runtime Environment - OS Version: Unix 15.0.0.0 CLR Version: 4.0.30319.17020 ( 4.2.1 (explicit/8862921 Thu Oct 29 17:09:16 EDT 2015) ) NUNIT-CONSOLE [inputfiles] [options] Runs a set of NUnit tests from the console. You may specify one or more assemblies or a single project file of type .nunit. Options: -fixture=STR Test fixture to be loaded (Short format: -load=STR) -run=STR Name of the test to run -config=STR Project configuration to load -xml=STR Name of XML output file -transform=STR Name of transform file -xmlConsole Display XML to the console -output=STR File to receive test output (Short format: -out=STR) -err=STR File to receive test error output -labels Label each test in stdOut -include=STR List of categories to include -exclude=STR List of categories to exclude -domain=X AppDomain Usage for Tests -noshadow Disable shadow copy when running in separate domain -nothread Disable use of a separate thread for tests -wait Wait for input before closing console window -nologo Do not display the logo -nodots Do not display progress -help Display help (Short format: -?) Options that take values may use an equal sign, a colon or a space to separate the option from its value.