2016-05-24 4 views
0

コンソールプログラムを使用してC#で書かれたNunitテストケースを実行しようとしています。これまで私はそれを行うにはさまざまな方法を試しましたが、同じ目的を達成するための完全な方法を見つけることはできませんでした。C#でNunitテストを実行し、実行ログを取得します

アプローチ1:NUnitTestAdapterパッケージを使用します。このパッケージは古いものであり、最新のnunitバージョン3.2.1を使用して作成されたテストを実行できません。しかし、その解に2.6.4

追加NUnitTestAdapterパッケージのような古いバージョンで細かい作業が続いて

CoreExtensions.Host.InitializeService(); 
     TestSuiteBuilder builder = new TestSuiteBuilder(); 
     TestPackage testPackage = new TestPackage(@"path to dll"); 
     RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
     remoteTestRunner.Load(testPackage); 
     TestSuite suite = builder.Build(testPackage); 
     TestSuite test = suite.Tests[0] as TestSuite; 
     var numberOfTests = ((TestFixture)test.Tests[0]).TestCount; 
     int i = 0; 
     foreach (TestMethod t in ((TestFixture)test.Tests[0]).Tests) 
     { 
      Console.WriteLine(t.TestName.Name); 
      //TestName testName = ((TestMethod)((TestFixture)test.Tests[0]).Tests[i]).TestName; 
      TestFilter filter = new NameFilter(t.TestName); 
      TestResult result = test.Run(new NullListener(), filter); 
      ResultSummarizer summ = new ResultSummarizer(result); 
      NUnit.Core.NUnitFramework.Assert.AreEqual(1, summ.ResultCount); 
      i++; 
     } 

以下のコードを試してみました私は、これは罰金ソリューションでしょうし、この任意の更新されたバージョンを取得することができます。

アプローチ2:

が私のプロジェクトにnunit3.console.exeへの参照を追加しました。これはというエラーを投げている「のいずれかのアセンブリはありませんが含まれてい

コードの下
string path = @"path to dll"; 
NUnit.ConsoleRunner.Program.Main(new[] { path }); 

で試してみましたNunit3-コンソールを使用して、テストまたは適切なテストドライバが見つかりませんでした」

実行ログを使用してテストを実行する方法を教えてもらえますか?

答えて

1

これはNUnitの動作を意図したものではありません。

最初の例では、NUnit 2.xの内部クラスとメソッドを使用していますが、これは一般的な使用目的では説明されていません。彼らは、私たち自身のテストによって呼び出されるすべてのメソッドに対してこれが過去の標準的なプラクティスだったので、公に宣言されます。また、NUnitテスト・アダプタを使用することは意味がありません。そのパッケージは、NUnitをVisual Studioテスト・ウィンドウに接続するためのものです。私はそれがあなたが実際に使っているものであるnunit.coreアセンブリを引っ張るので、あなたのために働いていると思う。

2番目の例では、メインを直接呼び出しています。あなたはすでにこれが機能していないということについてnunitの問題を投稿しているので、詳細には触れません。私は、スタンドアロンのプログラムを参照し、それを主なものとして呼び出すことは、最も簡単な場合にのみ動作すると言うでしょう。さまざまなアセンブリを動的にロードするコンソールランナーのようなプログラムでは、必ずしも機能するとは限りません。

NUnit 3は、テストを実行するための公開APIを提供します。これは、人々が長年にわたって私たちに求めていたものです。それは最終的にそこにある!なぜそれを使用しない?テストエンジンとそのAPIに関する情報については、nunit 3のドキュメントをチェックしてください。何らかの理由でプログラムをプログラムで実行したいのであれば、それは最近のことです。

もちろん、あなたが取り組んできたアプローチを自由に試すことができ、必要に応じてコメントを残します。私はちょうどこれが将来この記事を見つけた人々のために、NUnitがどのように使われるように設計されているのかを明確にしたいと思っています。

+0

あなたの説明のおかげで、チャーリー、私はプログラムでnunitテストを実行するために非常に多くの記事を読んで、私はそれらを実行する古い方法を取ったかもしれません。私はあなたが返信で言及したようにドキュメントを参照します。 – user3625533

+0

あなたは[this](https://github.com/nunit/docs/wiki/Test-Engine-API-Spec)Apiを参照していると思います。それは安定版ですか?私はトップに「変更される可能性がある」というコメントがあることがわかります。 – user3625533

+0

APIは、3.0、3.0.1、3.2、および3.2.1の4つのリリースに移行しました。私たちはそれに追加しましたが、何も削除しませんでした。 – Charlie

関連する問題