C# Nunit.net vs mono

C# Nunit.net vs mono,c#,mono,nunit,C#,Mono,Nunit,我使用asp.net mvc和C#编写了一个简单的测试应用程序。应用程序使用MySQL 通过使用dblinq生成linq到MySQL文件,应用程序可以在windows和linux下工作 我现在已经开始使用NUnit来测试我的代码,主要是因为我需要测试代码是否在 windows也将在linux中工作。 我的NUnit测试在Windows下运行良好,但在Linux下运行不好 这是我的Windows环境: NUnit版本2.5.1.9189版权所有(C) 2002-2009查理·普尔。版权所有(C)

我使用asp.net mvc和C#编写了一个简单的测试应用程序。应用程序使用MySQL 通过使用dblinq生成linq到MySQL文件,应用程序可以在windows和linux下工作

我现在已经开始使用NUnit来测试我的代码,主要是因为我需要测试代码是否在 windows也将在linux中工作。 我的NUnit测试在Windows下运行良好,但在Linux下运行不好

这是我的Windows环境:

NUnit版本2.5.1.9189版权所有(C) 2002-2009查理·普尔。版权所有(C) 2002-2004詹姆斯·W·纽柯克,迈克尔·C。 版权所有(C)2000-2002菲利普·克雷格。 版权所有

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

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

NUnit版本2.4.8版权所有(C) 2002-2007查理·普尔。版权所有(C) 2002-2004詹姆斯·W·纽柯克,迈克尔·C。 两个,阿列克谢·沃龙佐夫。版权 (C) 2000-2002菲利普·克雷格。所有权利 保留的

运行时环境-操作系统版本: 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.InotifyProperty已更改 无法加载,在系统中使用, 版本=2.0.0.0,区域性=中性, PublicKeyToken=b77a5c561934e089文件 或程序集名称库。测试, 版本=1.0.0.0,区域性=中性, PublicKeyToken=null,或其 未找到依赖项

我不知道我做错了什么。你有什么建议吗?似乎我需要包括System.ComponentModel.INotifyPropertyChanged,我已经搜索过了 我想上网看看它是否是用mono实现的,但我找不到任何信息。
谢谢

不知何故,您启动了1.1 CLR-注意“CLR版本:1.1.4322.2032(Mono 2.4.2.2)”

我不知道你是怎么做到的,但我很确定这就是问题所在。。。你到底是怎么运作的?我怀疑问题在于您使用的是针对.NET1.1编译的NUnit版本,因此Mono决定加载自己的CLRV1.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.1 CLR-注意“CLR版本:1.1.4322.2032(Mono 2.4.2.2)”

我不知道你是怎么做到的,但我很确定这就是问题所在。。。你到底是怎么运作的?我怀疑问题在于您使用的是针对.NET1.1编译的NUnit版本,因此Mono决定加载自己的CLRV1.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

最新的Mono发行版有两个不同的nunit,一个是nunit console(注意,由于包装提供了方便的shell脚本,所以不需要.exe后缀),另一个是nunit-console2。第一个是针对CLR 1.1概要文件编译的nunit,第二个是针对CLR 2.0概要文件编译的nunit


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

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


因此,短版本-您需要使用“nunit-console2”而不是“nunit-console”来获得用于测试的正确nunit版本。

nunit 2.5.10现在在windows和linux上都受支持。我在两个平台上都使用2.5.10,没有任何问题。

NUnit 2.5.10现在在windows和linux上都受支持。我在两个平台上都使用了2.5.10,没有任何问题。

可能是因为我自己编译了源代码,所以我做错了什么。然而,我不能像你提到的那样运行代码。在我像这样运行它之前:nunit console Library.Tests.dll当我按您所说的那样尝试时:mono--runtime=2.0.50727 nunit console Library.Tests.dll我收到以下错误警告:此应用程序支持的运行时版本不可用。使用默认运行时:v1.1.4322无法打开程序集“nunit console”:没有这样的文件或目录。“nunit console”问题可能是您指的是“nunit console.exe”,但您需要找到可以工作的运行时版本。。。编辑帮助答案。这很奇怪:$mono-Test.exe 2.0.50727.1433但是如果我运行$mono--runtime=2.0.50727.1433 Test.exe 1.1.4322.2032或$mono--runtime=2.0.50727 Test.exe 1.1.4322.2032关于nunit,我运行的是nunit控制台,而不是nunit-console.exe,我将进行搜索,看看是否可以找到nunit-console.exe的路径并尝试使用$mono nunit-console运行它。我下载了nunit并运行它,而不是使用mono附带的nunit,我现在可以工作了。谢谢Jon的帮助。在我的环境(Mac OS X Leopard,Mono 2.6.7)中,我不得不使用Mono--runtime=v2.0.50727(无论您以前在这里使用了什么)(请注意额外的“v”字符),可能是因为我自己编译了源代码,所以我做错了什么。然而,我不能像你提到的那样运行代码。在我像这样运行它之前:nunit console Library.Tests.dll当我按您所说的那样尝试时:mono--runtime=2.0.50727 nunit console Library.Tests.dll我收到以下错误警告:此应用程序支持的运行时版本不可用。使用默认运行时:v1.1.4322无法打开程序集“nunit”