mono - 在带有 MonoDevelop 的 OSX 上,从终端/命令行运行 NUnit 测试

标签 mono nunit monodevelop

鉴于我在 OSX 上的 MonoDevelop(MD) (3.0.4.6) 中创建了一个名为 TryTesting 的 C# NUnit 测试库,我应该如何从终端/命令行运行这些测试(以便我可以将它们添加到自动构建中)?

我知道一般公式是:

nunit-console .../TryTesting/bin/Debug/TryTesting.dll

mono nunit-console.exe .../TryTesting/bin/Debug/TryTesting.dll

但是,考虑到安装 MonoDevelop 时创建的环境,仅此还不够。

我得到以下输出和错误:

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 12.1.0.0
CLR Version: 2.0.50727.1433 ( 2.10.9 (tarball Mon May  7 20:25:51 EDT 2012) )

Missing method .ctor in assembly /private/var/folders/r6/wqmfjz8142z0z9vcg_7k9y140000gn/T/nunit20/ShadowCopyCache/3688_634830482326369170/Tests/assembly/shadow/52c5f76b/6c545c94_3e91abff_00000001/TryTesting.dll, type NUnit.Framework.TestFixtureAttribute
Can't find custom attr constructor image: /private/var/folders/r6/wqmfjz8142z0z9vcg_7k9y140000gn/T/nunit20/ShadowCopyCache/3688_634830482326369170/Tests/assembly/shadow/52c5f76b/6c545c94_3e91abff_00000001/TryTesting.dll mtoken: 0x0a000003
Could not load file or assembly 'nunit.framework, Version=2.6.0.12051, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' or one of its dependencies.

经过实验,这个问题似乎是由/usr/bin 和 MD 之间的 nunit 版本不匹配引起的。如果我下载最新的 NUnit 二进制文件并替换项目中的 nunit.framework 引用以指向下载的副本,那么我可以使用下载的 nunit-console.exe 来运行它。

所以,也许问题是:

  • 我是否应该删除对 nunit.framework 的自动引用并将我自己的 NUnit 发行版包含在我的源代码树中?
  • 或者,MonoDevelop 是否有我应该调用的 nunit-console 的匹配版本?

最佳答案

经过在多个环境中运行单元测试的丰富经验,我建议不要引用 nunit.framework MonoDevelop(或 Xamarin Studio)附带的。如果您只在该 IDE 中运行测试,那就没问题。但是,如果您从命令行、不同的环境或构建盒上运行测试,那么您应该可以控制 NUnit 的版本。

因此,如果您从“新建项目”对话框创建新的 NUnit 库,则应删除提供的 nunit.framework引用并将其替换为您自己的。

另请注意,NUnit 测试运行程序对程序集版本非常敏感。因此,您应该将所有 NUnit 二进制文件放在源代码树中。 (NUnit-2.6.1/bin 大小为 7 MB)

还值得注意的是,还有其他方式来运行测试,例如 NAnt <nunit2> Task ,这将对 NUnit 版本敏感。

因此,将 NUnit 2.6.1* 下载到我的解决方案目录下的软件包目录后,命令将是:

mono packages/NUnit-2.6.1/bin/nunit-console.exe TryTesting/bin/Debug/TryTesting.dll

*脚注:由于 NotImplementedException,我无法使用 NUnit 2.6.2。

关于mono - 在带有 MonoDevelop 的 OSX 上,从终端/命令行运行 NUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393425/

相关文章:

c# - 一个单一项目中的 WinApi+LinuxApi

mysql - 无法使用 C# 和 Mono 连接到 MySQL 数据库

c# - 使用 Rhino Mocks 变干

c# - 如何在我的测试库中创建和运行网络主机?

mono - 使用 Monotouch 为 IOS UI Picker 设置主题

linux - 由于 dpkg 被中断,无法在 linux 错误中安装软件

c# - 使用单元测试和测试数据库

c# - 使用 sqlmetal 为 npgsql 生成 linq 类

c# - MonoTouch.Dialog:导航栏中的返回项

c# - MonoDevelop 可以即时突出显示错误和警告吗?