在Windows上的Mono上运行NUnit测试

时间:2015-03-05 08:25:03

标签: c# windows unit-testing mono nunit

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

1 个答案:

答案 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来阻止它。