2016-11-17 4 views
1

У меня есть два файла. Один мой тестовый файл, Tests.cs:Как скомпилировать и запустить файлы C# с помощью тестов NUnit из командной строки на Mac, используя mono

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 отъезда: Tests.exe Tests.cs, я получаю сообщение об ошибке: CS0246 об ошибке: тип или пространство имен имя `NUnit 'не найден. Вам не хватает ссылки на сборку?

И если они были исправлены, файл Tests не ссылается на файл Greeter в любом случае, так как я могу его найти?

ответ

1

компилировать ваши тесты как библиотека, включают в себя ссылку на рамки NUnit, которая существует в GAC, и добавить все .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."; 
    } 
} 

Fi фиксирована в Assert:

using NUnit.Framework; 

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

Примечание: тестирование Строки должно действительно быть культурным известно, или использовать StringComparison.InvariantCulture

+0

Спасибо, что не только отвечая на мой вопрос, но и ответить на следующие вопросы, которые я собирался спросить с моим дрянным образцом код. ;) – TiggerToo

+0

@TiggerToo не проблема, компиляция непосредственно с csc/mcs сначала станет старой, но является отличным навыком, чтобы понять, как сборки .NET собираются ... Возможно, вы захотите посмотреть на IDE .. Visual Studio для Mac (новая версия Xamarin Studio) или «базовая» версия MonoDevelop ... У них есть встроенные NUnit Test Runners и позволяют полностью отлаживать ваши тесты ... ;-) https://www.visualstudio.com/ vs/visual-studio-mac/или http://www.monodevelop.com – SushiHangover

+0

Я использую это для простых головоломок, которые включают один тестовый файл и один файл класса, и я думаю, что это проще для этого. Для полноценного проекта я определенно хотел бы использовать Xamarin. – TiggerToo