Nunit .net 与 Mono

发布于 2024-07-29 04:50:00 字数 1322 浏览 2 评论 0原文

我使用 asp.net mvc 和 C# 编写了一个简单的测试应用程序。 该应用程序使用MySQL 通过使用 dblinq 生成 linq to 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 菲利普·克雷格。 保留所有权利。

运行时环境 - 操作系统版本: 微软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(单声道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,我已经搜索过 上网看看它是否是在单声道中实现的,但我找不到任何信息。 谢谢

I have written a simple test application using asp.net mvc with C#. The application uses MySQL
by using dblinq to generate linq to MySQL files and the application is working both in windows and linux.

I have now started to use NUnit to test my code, mostly since I need to test if the code working under
windows also will work in linux.
My NUnit tests runs well under Windows but not under Linux.

This my Windows environment:

NUnit version 2.5.1.9189 Copyright (C)
2002-2009 Charlie Poole. Copyright (C)
2002-2004 James W. Newkirk, Michael C.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - OS Version:
Microsoft Windows NT 5.1.2600 Service
CLR Version: 2.0.50727.3053 ( Net
2.0.50727.3053 )

This my Linux environment with the error (Library is my application name):

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:
Unix 2.6.24.24 CLR Version:
1.1.4322.2032 ( Mono 2.4.2.2 )

** (/usr/local/lib/mono/1.0/nunit-console.exe:4888):
WARNING **: The class
System.ComponentModel.INotifyPropertyChanged
could not be loaded, used in System,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089 File
or assembly name Library.Tests,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null, or one of its
dependencies, was not found.

I can't figure out what I am doing wrong. Do you have any tips? It seems like I need to include System.ComponentModel.INotifyPropertyChanged, I have searched
the Internet to see if it is implemented in mono but I can't find any information.
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄意 2024-08-05 04:50:00

不知何故,你已经启动了 1.1 CLR - 注意“CLR Version: 1.1.4322.2032 ( Mono 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

底部得到什么版本?

Somehow you've started the 1.1 CLR - note "CLR Version: 1.1.4322.2032 ( Mono 2.4.2.2 )"

I'm not sure how you've done that, but I'm pretty sure that's the problem... How exactly are you running NUnit? I suspect that the problem is you're using a version of NUnit compiled against .NET 1.1, so Mono decides to load its own CLR v1.1. Assuming you're explicitly calling the mono binary, try specifying the --runtime argument, like this:

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

EDIT: To find out which runtime version you've got, try this Test.cs file:

using System;

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

Then compile and run it:

$ gmcs Test.cs
$ mono Test.exe
2.0.50727.1433

What version do you get out at the bottom?

醉态萌生 2024-08-05 04:50:00

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

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

Most recent Mono distributions come with two different nunits - one is nunit-console (note no .exe suffix needed, since the packaging supplies convenience shell-scripts), and the other one is nunit-console2. The first is nunit compiled against the CLR 1.1 profile, and the second is nunit compiled against the CLR 2.0 profile.

So, the short version - you needed to use "nunit-console2" instead of "nunit-console" to get the correct nunit version for your tests.

陌路黄昏 2024-08-05 04:50:00

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

NUnit 2.5.10 is now supported on both windows and linux. I'm using 2.5.10 at work on both platforms without any problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文