2017-01-04 14 views
0

NUnitエンジンを使用してWindowsフォームアプリケーションでNUnitテストを実行しようとしていますが、テストのあるDLLのパスを設定する方法がわかりません私は既に参照にDLLを含めています)。ボタンをクリックすると、テストが開始されます。しかし、NUnitが開き、何もせずにすぐに終了します。私が持っているものは次のとおりです。NUnitエンジンを使用してWindowsフォームアプリケーションでNUnitテストを実行する

namespace ATF.GUI 
{ 
    public partial class ATF_Main : Form 
    { 
     TestPackage package; 
     ITestEngine engine; 

     public ATF_Main() 
     { 
      InitializeComponent(); 
     } 

     private void ATF_Main_Load(object sender, EventArgs e) 
     { 
      string path = Assembly.GetExecutingAssembly().Location; 
      package = new TestPackage(path); 
      package.AddSetting("Working Directory", Environment.CurrentDirectory); 

      // Prepare the engine 
      engine = TestEngineActivator.CreateInstance(); 
     } 

     private void btnStartTests_Click(object sender, EventArgs e) 
     { 
      using (ITestRunner runner = engine.GetRunner(package)) 
      { 
       // Execute the tests 
       XmlNode result = runner.Run(null, TestFilter.Empty); 
      } 
     } 
+0

'path'はあなたのテストを含むDLLを指すべきです –

+0

私はそれを理解していますが、どうですか?私はそれが入っているビンを指摘しようとしましたが、テストを実行するのにまだNUnitを取得できませんでした。 – Mike

+0

ファイル名を含む完全なパスを指定します。テストが実行されたかどうか、どうしたら分かりますか? 'result'ノードの内容をチェックしますか? –

答えて

1

私はこれに本当の答えを得たことはありませんでしたが、私はそれを自分で考え出しました。

private void ATF_Main_Load(object sender, EventArgs e) 
    { 
     // Add reference to tests DLL and load it here by name 
     Assembly testAssembly = Assembly.Load("Program.Tests"); 
     package = new TestPackage(testAssembly.Location); 
     package.AddSetting("Working Directory", Environment.CurrentDirectory); 
    } 

複数のテストアセンブリがある場合は、リストにアセンブリの場所を追加することもできます。

0

guiアセンブリにテストアセンブリを設定しています。テストがないので、NUnitは何もしていません。私はそれが結果に誤りを返すと思います。

何らかの理由で、アプリケーションにテストアセンブリのパスを指定する必要があります。これは、コマンドラインや何らかのダイアログを使用して行うことができます。どのようにしてnunit3-consoleまたはnunit-guiのコードを見ることができます。

参照されているアセンブリを使用するあなたの考えは、パッケージ化されたアプリケーションでは少し奇妙なようです。ユーザーは、必要なテストアセンブリを参照して、毎回ソースを用意して再構築する必要があります。本当にそれが欲しいですか?

場合によっては、その参照を取得する方法を見つける必要があります。いつもそこにある定数がないなら、やりにくいです。

+0

おそらく私はこれを間違ってやっています - 私は一度もNUnitをセットアップしていないので、この段階で少し失われています。私は私のソリューションATF.GUIとATF.Tests(クラスライブラリ)内に2つのプロジェクトを持っています。 ATF.GUIは私のStartUpプロジェクトです。そこにあるボタンで自動的にATFテストを実行します。これを行う適切な方法は何でしょうか? – Mike

+0

エンジンは、そのアセンブリへのパスを指定して、アセンブリ内でテストを実行するように設定されています。この考え方は、エンジンとランナーは、テストがどこにあるのか、どこに呼び出されているのかを事前に知ることができないので、彼らに言わなければなりません。 – Charlie

+0

すでにNUnitを独自のコンソールランナーまたは新しいGUIを介してパッケージとして使用することに慣れていますか?そうでない場合は、最初に慣れ親しむのに役立ちます。 ランナーがテストアセンブリを参照する理由を説明できますか? – Charlie

関連する問題