Nunit .net vs mono

时间:2009-07-24 14:27:01

标签: c# mono nunit

我使用带有C#的asp.net mvc编写了一个简单的测试应用程序。该应用程序使用MySQL 通过使用dblinq生成linq到MySQL文件,应用程序在Windows和Linux中都有效。

我现在开始使用NUnit来测试我的代码,主要是因为我需要测试代码是否正常工作 windows也可以在linux上运行。 我的NUnit测试在Windows下运行良好,但在Linux下运行不正确。

这是我的Windows环境:

  

NUnit版本2.5.1.9189版权所有(C)   2002-2009 Charlie Poole。版权所有(C)   2002-2004 James W. Newkirk,Michael C.   版权所有(C)2000-2002 Philip Craig。   保留所有权利。

     

运行时环境 - 操作系统版本:   Microsoft Windows NT 5.1.2600服务   CLR版本:2.0.50727.3053(净值   2.0.50727.3053)

这是我的Linux环境,错误(Library是我的应用程序名称):

  

NUnit版本2.4.8版权所有(C)   2002-2007查理普尔。版权所有(C)   2002-2004 James W. Newkirk,Michael C.   二,阿列克谢A.沃龙佐夫。版权   (C)2000-2002 Philip Craig。所有权利   保留

     

运行时环境 - 操作系统版本:   Unix 2.6.24.24 CLR版本:   1.1.4322.2032(Mono 2.4.2.2)

     

**(/usr/local/lib/mono/1.0/nunit-console.exe:4888):   警告**:上课   System.ComponentModel.INotifyPropertyChanged   无法加载,在系统中使用,   版本= 2.0.0.0,文化=中立,   PublicKeyToken = b77a5c561934e089文件   或程序集名称Library.Tests,   版本= 1.0.0.0,文化=中立,   PublicKeyToken = null,或其中一个   没有找到依赖关系。

我无法弄清楚我做错了什么。你有什么建议吗?看来我需要包含System.ComponentModel.INotifyPropertyChanged,我已经搜索过了 互联网,看看它是否以单声道实现,但我找不到任何信息。 谢谢

3 个答案:

答案 0 :(得分:3)

不知怎的,你已经启动了1.1 CLR - 请注意“CLR版本:1.1.4322.2032(单声道2.4.2.2)”

我不确定你是怎么做到的,但我很确定这就是问题......你究竟是怎么运行NUnit的?我怀疑问题是你正在使用针对.NET 1.1编译的NUnit版本,因此Mono决定加载自己的CLR v1.1。假设您显式调用mono二进制文件,请尝试指定--runtime参数,如下所示:

mono --runtime=2.0.50727 (whatever you previously had here)

编辑:要找出您已获得的运行时版本,请尝试以下Test.cs文件:

using System;

class Test
{
    static void Main()
    {
        Console.WriteLine(Environment.Version);
    }
}

然后编译并运行它:

$ gmcs Test.cs
$ mono Test.exe
2.0.50727.1433

你从底部得到什么版本?

答案 1 :(得分:3)

最近的Mono发行版有两个不同的nunit - 一个是nunit-console(注意不需要.exe后缀,因为打包提供了方便的shell脚本),另一个是nunit-console2。第一个是根据CLR 1.1配置文件编译的nunit,第二个是针对CLR 2.0配置文件编译的nunit。

所以,短版本 - 您需要使用“nunit-console2”而不是“nunit-console”来为您的测试获取正确的nunit版本。

答案 2 :(得分:0)

现在Windows和Linux都支持NUnit 2.5.10。我在两个平台上使用2.5.10都没有任何问题。