2014-01-10 29 views
7

ユニットテストがデプロイメントプロセスの一部として渡されていることをプログラムでチェックしようとしています。アプリケーションは、ユニットテストフレームワークのためにMBunitとGallioを使用します。ここでGallioとMBUnitを使用してプログラムでユニットテストを実行するにはどうすればよいですか?

は私のコードです:

public class Tests 
    { 
     [Test] 
     public void Pass() 
     {    
      Assert.IsTrue(true); 
     } 

     [Test] 
     public void Fail() 
     { 
      Assert.Fail(); 
     } 
    } 

時:

var setup = new Gallio.Runtime.RuntimeSetup(); 
setup.AddPluginDirectory(@"C:\Program Files\Gallio\bin"); 

using (TextWriter tw = new StreamWriter(logFilename)) 
{ 
    var logger = new Gallio.Runtime.Logging.TextLogger(tw); 
    RuntimeBootstrap.Initialize(setup, logger); 

    TestLauncher launcher = new TestLauncher();     
    launcher.AddFilePattern(dllToRunFilename); 
    TestLauncherResult result = launcher.Run(); 
} 

ここでDLLに含まれているテストは、私は(私はこれはイカルスのテストランナーで動作検証してきました)をロードしています私はresults

enter image description here

で、次の値を取得するアプリケーションを実行します

本当に実行するテストがあるので、間違っています!ログファイルは、次のことで

無効プラグイン「Gallio.VisualStudio.Shell90」が:プラグインを 条件が満たされなかった可能。これは、動作させるために第三者の アプリケーション内でホストする必要があるプラグインに対して、意図されている の動作です。有効条件: '$ {プロセス:DEVENV.EXE_V9.0}または$ {プロセス:VSTESTHOST.EXE_V9.0}または $ {プロセス:MSTEST.EXE_V9.0}または$ {フレームワーク:NET35}'。無効なプラグイン 'Gallio.VisualStudio.Tip90':プラグインは別の無効化された プラグインに依存します: 'Gallio.VisualStudio.Shell90'。

どのようにしてこの問題を解決し、テスト結果を見つけることができますか?

+0

Visual Studioのどのバージョンですか? – jessehouwing

+0

私はVS2012で働いています – Liath

+1

私はGallioと仕事をしていませんでしたので、これが問題かどうかはわかりませんが、あなたの 'Tests'クラスは' [TestFixture] 'ではありません。もしGallioがfixtureを見つけることができないのであれば、 '[Test] 'の読み込みを見ていないかもしれません。 – Caleb

答えて

4

これは私のために働いていますが、私はこのGallioBundleナゲットを使用してgallioとmbunitを取得していますので、あなたがインストールしたものと多少の違いがあります。

プラグインに関するログメッセージが必要ですが、プラグインはGallioランタイムを自己ホストしている場合には動作しません。このようにテストされた

using System; 
using System.IO; 
using Gallio.Runner; 
using Gallio.Runtime; 
using Gallio.Runtime.Logging; 
using MbUnit.Framework; 

public static class Program 
{ 
    public static void Main() 
    { 
     using (TextWriter tw = new StreamWriter("RunTests.log")) 
     { 
      var logger = new TextLogger(tw); 
      RuntimeBootstrap.Initialize(new RuntimeSetup(), logger); 

      TestLauncher launcher = new TestLauncher(); 
      launcher.AddFilePattern("RunTests.exe"); 
      TestLauncherResult result = launcher.Run(); 
      Console.WriteLine(result.ResultSummary); 
     } 
    } 
} 

public class Tests 
{ 
    [Test] 
    public void Pass() 
    { 
     Assert.IsTrue(true); 
    } 

    [Test] 
    public void Fail() 
    { 
     Assert.Fail(); 
    } 
} 

› notepad RunTests.cs 
› nuget.exe install -excludeversion GallioBundle 
    Installing 'GallioBundle 3.4.14.0'. 
    Successfully installed 'GallioBundle 3.4.14.0'. 
› cd .\GallioBundle\bin 
› csc ..\..\RunTests.cs /r:Gallio.dll /r:MbUnit.dll 
    Microsoft (R) Visual C# Compiler version 12.0.21005.1 
    for C# 5 
    Copyright (C) Microsoft Corporation. All rights reserved.  
› .\RunTests.exe 
    2 run, 1 passed, 1 failed, 0 inconclusive, 0 skipped 
+0

私は心配していません - 自分のウェブサイトからGallioとMBUnitを入手しましたが、サービスタイプ 'Gallio.Runner.Projects.ITestProjectManager'のコンポーネントを解決できませんでした。コンポーネントがないようです登録され、そのサービスタイプに対して有効になります。 – Liath

+0

私は実際にプログラムでNUnitテストを実行することができましたが、これはあまり慌てないでください。 – Liath

+0

私はこれを答えとしてマークしましたが、私はそれを動作させることができませんでしたが、私が見た他のドキュメントと一致し、OPが完全な例を提供したからです。 – Liath

0

これらは、2012年のVisual StudioのときちんとNUnitのトリックを使用して上記のMbUnitのテストを実行するための命令です。

まず、NUnitのためのNUnitのテストアダプタの延長(はい、NUnitの)

  • ツール]> [拡張と更新>オンライン>検索をインストール> NUnitのテストアダプタをインストールします。
  • Visual Studio IDEを再起動する必要がある場合があります。

次に、テストメソッドに新しいNUnitテスト属性を追加するだけで済みます。並列実行を可能にする(NUnitのとガッリオイカルスGUIテストランナーがMbUnitのようにそれらを実行するようあなたが実行して、Visual Studioでテストをデバッグすることができます...(最上部のusingステートメントを注意してください)ここ

//C# example 
using MbUnit.Framework; 
using NuTest = NUnit.Framework.TestAttribute; 

namespace MyTests 
{ 
    [TestFixture] 
    public class UnitTest1 
    { 
     [Test, NuTest] 
     public void myTest() 
     { 
      //this will pass 
     } 
    } 
} 

をコード例を参照してください。例えば)。gallioのインストール先のNUnitフォルダ、つまりC:¥Program Files¥Gallio¥bin¥NUnitを削除して、GallioのNUnitテストを停止する必要があります

関連する問題