运行 Windows 上的 Mono 上的 NUnit 测试

Running NUnit tests on Mono on Windows

我是 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

看起来 Uri class 在 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 来停止它。