如何使用单声道从Mac上的命令行使用NUnit测试编译和运行C#文件

时间:2016-11-17 20:23:20

标签: c# macos mono nunit

我有两个文件。一个是我的测试文件,Tests.cs:

using NUnit.Framework;

[TestFixture]
public class HelloTest
{
    [Test]
    public void Stating_something ()
    {
        Assert.That(Greeter.Hello(), Is.EqualTo("Hello world."));
    }
}

另一个是Greeter.cs:

public class Greeter
{
    public static string Hello(string statement)
    {
        return "Hello world.";
    }
}

如何从Mac上的命令行运行这些?

对于一个简单的脚本,我可以运行:

mcs -out:Script.exe Script.cs
mono Script.exe

但是当我尝试运行mcs -out:Tests.exe Tests.cs时,我收到一个错误:错误CS0246:类型或命名空间名称`NUnit'无法找到。你错过了装配参考吗?

如果修复了,那么测试文件无论如何都不会引用Greeter文件,那么如何让它找到呢?

1 个答案:

答案 0 :(得分:2)

将您的测试编译为库,包含对GAC中存在的NUnit框架的引用,并添加所有.cs

mcs -target:library -r:nunit.framework -out:Tests.dll Greeter.cs Tests.cs

使用Nunit控制台运行程序运行测试:

nunit-console Tests.dll

删除字符串参数以匹配测试:

public class Greeter
{
    public static string Hello()
    {
        return "Hello world.";
    }
}

修正了Assert:

using NUnit.Framework;

[TestFixture]
public class HelloTest
{
    [Test]
    public void Stating_something ()
    {
        Assert.AreEqual("Hello world.", Greeter.Hello());
    }
}

注意:字符串测试应该真正具有文化意识,或使用StringComparison.InvariantCulture