我有两个文件。一个是我的测试文件,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文件,那么如何让它找到呢?
答案 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