我是Mono的新手,我希望能够在Mono上运行测试。我在Visual Studio 2012中创建了简单的单元测试项目,并针对.NET 4.5进行了编译。
using NUnit.Framework;
namespace ClassLibrary2.Tests
{
[TestFixture]
public class Class1Tests
{
[Test]
public void MyTest()
{
var a = "andsdsaj";
var b = "fjkfjkdjfk";
Assert.AreEqual(a, b);
}
}
}
然后我尝试从Mono命令提示符执行它:
C:\Program Files (x86)\Mono>nunit-console "C:\Users\boris.m\Documents\Visual Studio 2012\Projects\ClassLibrary2.Tests\bin\Debug\ClassLibrary2.Tests.dll"
我收到以下错误:
C:\Program Files (x86)\Mono>nunit-console "C:\Users\boris.m\Documents\Visual Stu
dio 2012\Projects\ClassLibrary2.Tests\bin\Debug\ClassLibrary2.Tests.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: Microsoft Windows NT 6.1.7601.65536 Service Pack 1
CLR Version: 2.0.50727.1433 ( 3.12.0 (Visual Studio built mono) )
Unhandled Exception:
System.ArgumentException: path
at System.IO.FileSystemInfo.CheckPath (System.String path) [0x00000] in <filen
ame unknown>:0
at System.IO.DirectoryInfo..ctor (System.String path, Boolean simpleOriginalPa
th) [0x00000] in <filename unknown>:0
at System.IO.DirectoryInfo..ctor (System.String path) [0x00000] in <filename u
nknown>:0
at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:.ctor (string)
at NUnit.Util.AddinManager.RegisterAddins () [0x00000] in <filename unknown>:0
at NUnit.Util.AddinManager.InitializeService () [0x00000] in <filename unknown
>:0
at NUnit.Util.ServiceManager.InitializeServices () [0x00000] in <filename unkn
own>:0
at NUnit.ConsoleRunner.Runner.Main (System.String[] args) [0x00000] in <filena
me unknown>:0
at NUnit.ConsoleRunner.Class1.Main (System.String[] args) [0x00000] in <filena
me unknown>:0
答案 0 :(得分:2)
看起来Uri类在Mono 3.12中已经改变,因此NUnit 2.4.8没有返回NUnit程序集的正确路径。 Windows上的Mono 3.3可以正常运行。
我已针对此问题在bugzilla上打开了一个错误。
似乎可以在Windows上使用NUnit 2.6.4和Mono 3.12。下载zip文件然后解压缩,您可以使用类似于以下命令行运行测试:
mono --runtime=v4.0 nunit-console.exe c:\path\to\tests\MyTests.dll
这似乎运行测试但是nunit-console.exe似乎永远不会关闭所以你使用ctrl + C来阻止它。