2016-11-17 8 views
1

私は2つのファイルを持っています。一つは、私のテストファイル、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 

をしかし、私は-out MCSを実行しようとすると:Tests.exe Tests.cs、私はエラーを取得する:エラーCS0246:型または名前空間名を`NUnit 'が見つかりませんでした。アセンブリの参照がありませんか?

それが修正されていれば、テストファイルはGreeterファイルを参照していないので、どのように見つけたらいいですか?

答えて

1

、ライブラリとしてテストをコンパイルし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."; 
    } 
} 

Fiを提供してアサートをXED:

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 For Mac (新しいバージョンのXamarin Studio)または "基本的な" MonoDevelopバージョン...彼らはNUnitテストランナーを内蔵しており、テストの完全なデバッグを可能にしています。;-) https://www.visualstudio.com/ vs/visual-studio-mac /またはhttp://www.monodevelop.com – SushiHangover

+0

これは、テストファイルとクラスファイルを1つずつ含む簡単なパズルパズルに使用しています。本格的なプロジェクトでは、間違いなくXamarinを使用したいと考えています。 – TiggerToo

関連する問題