我使用带有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,我已经搜索过了 互联网,看看它是否以单声道实现,但我找不到任何信息。 谢谢
答案 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都没有任何问题。