在Ubuntu上通过命令行运行NUnit测试

7
如何在Ubuntu命令行上运行NUnit测试?
我已经创建了OnlyTest.cs文件。
using System;
using System.Text;
using System.Collections.Generic;
using NUnit.Framework;

[TestFixture]
public class OnlyTest
{
    [Test]
    public void MyTest() 
    {
        int a = 10;
        Assert.AreEqual(10, a);
    }
}

根据文章《在Linux上运行NuGet命令行》,我已经下载了NuGet.exe和Microsoft.Build.dll文件。
我使用NuGet安装了NUnit。
    $ mono NuGet.exe install NUnit
    正在安装“NUnit 2.6.4”。
    已成功安装“NUnit 2.6.4”。
$ ls -lR .: 总用量 1668 -rw-rw-r-- 1 mw mw 28861 6月 24 23:45 Microsoft.Build.zip -rw-rw-r-- 1 mw mw 1664512 6月 24 23:42 NuGet.exe drwxrwxr-x 3 mw mw 4096 6月 25 00:29 NUnit.2.6.4 -rw-rw-r-- 1 mw mw 208 6月 25 00:27 OnlyTest.cs
./NUnit.2.6.4: 总用量 108 drwxrwxr-x 2 mw mw 4096 6月 25 00:29 lib -rw-rw-r-- 1 mw mw 1131 6月 25 00:29 license.txt -rw-rw-r-- 1 mw mw 99004 6月 25 00:29 NUnit.2.6.4.nupkg
./NUnit.2.6.4/lib: 总用量 720 -rw-rw-r-- 1 mw mw 151552 6月 25 00:29 nunit.framework.dll -rw-rw-r-- 1 mw mw 584600 6月 25 00:29 nunit.framework.xml
由于我不确定如何编译和运行。
编译没有出现任何错误。
 mcs OnlyTest.cs -target:library -r:NUnit.2.6.4/lib/nunit.framework.dll -out:OnlyTest.dll
但是,当我尝试运行nunit时,会出现错误。
$ nunit-console OnlyTest.dll -noresult
NUnit-Console 版本 2.6.0.0
版权所有 (C) Charlie Poole,2002-2012年。
版权所有 (C) James W. Newkirk, Michael C. Two和Alexei A. Vorontsov,2002-2004年。
版权所有 (C) Philip Craig,2000-2002年。
保留所有权利。
运行环境 - 操作系统版本: Unix 3.16.0.30 CLR 版本: 4.0.30319.17020 ( Mono 4.0 ( 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1) ) )
进程模型: 默认 域使用: 单一 执行运行时: mono-4.0 程序集 /[MY_PATH]/OnlyTest.dll 中类型 NUnit.Framework.TestFixtureAttribute 的构造函数丢失。 找不到自定义属性构造函数的图像: /[MY_PATH]/OnlyTest.dll mtoken: 0x0a000001 无法加载文件或程序集 'nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77' 或其依赖项。

nunit-gui同样如此。

2个回答

9
Could not load file or assembly 'nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77'

检查已安装的nunit-console/nunit程序集...我猜它正在挑选GAC中的旧程序集。

让我们从头开始:

获取最新和最棒的NUnit 以及 它的运行工具。

curl https://api.nuget.org/downloads/nuget.exe -o nuget.exe
mono nuget.exe install NUnit
mono nuget.exe install NUnit.Runners

确保 Mono 首先找到这些程序集(而不是 GAC)。
export MONO_PATH=${PWD}/NUnit.Runners.2.6.4/tools:${PWD}/NUnit.2.6.4/lib

创建测试用例并编译:

vi OnlyTest.cs #Using the example in your question
mcs OnlyTest.cs -target:library -r:NUnit.2.6.4/lib/nunit.framework.dll -out:OnlyTest.dll

运行它:

mono ./NUnit.Runners.2.6.4/tools/nunit-console.exe OnlyTest.dll -noresult

输出:

Using default runtime: v4.0.30319
NUnit-Console version 2.6.4.14350
Copyright (C) 2002-2012 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 14.3.0.0
  CLR Version: 4.0.30319.17020 ( Mono 4.0 ( 4.3.0 (master/b044a27 Thu Jun 18 15:17:08 PDT 2015) ) )

ProcessModel: Default    DomainUsage: Single
Execution Runtime: mono-4.0
.
Tests run: 1, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.0280499 seconds
  Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

谢谢,它起作用了。我也可以使用nunit-gui OnlyTest.dll。非常好的逐步解释,我只需要将$(PWD)更改为$(pwd) - user2314351
顺便说一下,我有操作系统版本:Unix 3.16.0.30,CLR版本:2.0.50727.1433(Mono 3.5(3.2.8)。用于获取Mono 4的PPA是哪个? - user2314351
我添加了另一个答案,以便为您指出Unbuntu的最新mono软件包...我从源代码构建:Mono JIT编译器版本4.3.0(master/b044a27) - SushiHangover
如果我在尝试运行 mono nuget.exe install NUnit 时收到 "The 'NUnit 3.11.0' package requires NuGet client version '2.12' or above, but the current NuGet version is '2.8.60717.93'" 的提示,这是否意味着需要安装/更新类似于NuGet客户端的其他CLI工具? - netpoetica

0

提醒:我在OS-X上构建了mono源代码,因为官方版本仍然是32位。

在Ubuntu上获取最新的版本:

对于Debian、Ubuntu和其衍生版本,请将Mono项目GPG签名密钥和软件包存储库添加到您的系统中(如果您不使用sudo,请确保切换到root用户):

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update

运行软件包升级以将现有软件包升级到最新版本。然后按照使用部分中的说明安装Mono。

注意:虽然APT软件包是针对Debian Wheezy构建的,但它与许多Debian衍生版(包括Ubuntu)兼容,这意味着您可以在所有这些发行版上使用相同的存储库。

http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接