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

问题描述:

我有两个文件。一个是我的测试文件,Tests.cs:如何使用单声道在Mac上使用NUnit测试编译和运行C#文件从命令行使用单声道

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文件,那么我如何才能找到它?

编译你的测试作为一个库,包括对NUnit的框架存在于GAC参考,并添加所有的.cs:与NUnit的控制台亚军

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

运行测试:

nunit-console Tests.dll 

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

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

网络固定的断言:

using NUnit.Framework; 

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

注意:string测试应该真正文化的了解,或使用StringComparison.InvariantCulture

+0

谢谢你不仅回答我的问题也回答下一个问题我要问我的蹩脚的样本码。 ;) – TiggerToo

+0

@TiggerToo没问题,用csc/mcs直接编译会先老实实实实实实实实实实实实实实实实实实实实实实实在在的理解了如何构建.Net程序集...你可能想看看IDE .. Visual Studio For Mac (Xamarin Studio的新版本)或“基本的”MonoDevelop版本......它们内置了NUnit测试运行器并允许对测试进行全面调试...... ;-) https://www.visualstudio.com/ vs/visual-studio-mac /或http://www.monodevelop.com – SushiHangover

+0

我正在使用这个简单的编码难题,其中包括一个测试文件和一个类文件,我认为这更容易。对于一个完整的项目,我肯定会想要使用Xamarin。 – TiggerToo