テストツール調査

テストファーストツール調査
 
 ■Test Driven .Net
 
  下記のサイトから
 
   http://www.testdriven.net/download_select.aspx 
  
  Test Driven .Netをダウンロードしインストール。(フリー版)
  TestDriven.NETをインストールする
  
   (1)TestDrivern.Net 2.8.1230 perosnal をインストール
   (2)Visual Studioの[ツール]-[アドインマネージャ]で、「TestDriven.NET」にチェックを入れる
 
  単体テストプログラムを作成する
  
   (1)アプリケーションとは別のプロジェクトを単体テスト用に作成し、ディレクトリ構成も合わせる
   (2)プロジェクトの参照先に、TestDriven.NETのインストール先にあるnunit.framework.DLLを追加する
   (3)XXXTestという名前のクラスを生成して、テストコードを実装する
   (4)テストプロジェクトを参照へ追加。
   (5)テストクラスへ[TestFixture]、テストメソッドへ[Test]を設定。
   (6)Assert.AreEqual(ConnectionState.Open, dba.Connection.State, "db open success");という感じでチェック。
 
  動作確認OK。
 
  
 ■NCover、NCoverExploer
   
  Test Driven .netにハンドルされています。カバー率を確認可能。
  これも良い感じです。フリーですし。
  
  
 ■Test Runner for Visual Studio 2005を試す
  
  C:\Program Files\Mailframe\TestRunner\へインストール
  
  テスト結果をIDE上へグラフィカルに表示してくれます。
  $49かかりますが、とても良い感じです。会社として買うのならOKです。
  
 
 ■NUitをインストール
  
  Test Driven .Net側で別のフォルダへインストールされたが、それとは別でインストール
 
  Visual Studio 2005との連携は、プロジェクトの
  
   [プロパティ]-[デバッグ]の[開始動作]の[外部プログラムの開始]
   
  に
  
   "C:\Program Files\NUnit 2.4.2\bin\nunit.exe"
  
  を設定、次に[開始オプション]-[コマンドライン引数]へ
  
   テストプロジェクトの.dll /run
   
  を設定。VS2005を実行するとNUnitが実行されます。


log4net調査
 
 (1)log4netをダウンロード
 
  下記サイトを参考にログを出力を行う。
 
  http://igeta.cocolog-nifty.com/blog/2007/06/log4net.htmlhttp://igeta.cocolog-nifty.com/blog/2007/06/log4net.html
 
 (2)下記の内容のlog4net.configを作成する。
 
  <?xml version="1.0" encoding="utf-8" ?>
  <!-- [log4net.config] -->
  <configuration>
    <configSections>
      <section name="log4net"
        type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
   
    <appSettings>
      <!-- log4net 内部のデバッグメッセージを出力 -->
      <add key="log4net.Internal.Debug" value="true" />
    </appSettings>
   
    <log4net>
      <!-- コンソール出力用 (VS 上 [出力] ウインドウへの出力) -->
      <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <!-- 出力文字列のフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="@%-5level>> %message%newline" />
        </layout>
      </appender>
     
      <!-- ファイル出力用 -->
      <appender name="DailyFileAppender"
        type="log4net.Appender.RollingFileAppender">
        <!-- ログファイルの切替 { サイズ: Size, 日付: Date } -->
        <param name="RollingStyle" value="Date" />
        <!-- ファイル名 -->
        <param name="File" value="log/" />
        <!-- ファイル名に付加する日付パターン -->
        <param name="DatePattern" value='yyyy-MM"/AppName_"yyMMdd".log"' />
        <!-- ファイル名の固定 -->
        <param name="StaticLogFileName" value="false" />
        <!-- ファイル書き込み { 追記: true, 上書き: false } -->
        <param name="AppendToFile" value="true" />
        <!-- 最大保存ファイル数 (古い順に削除) -->
        <param name="MaxSizeRollBackups" value="32" />
        <!-- 出力文字列のフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
          <header type="log4net.Util.PatternString" value='[task time="%date{HH:mm:ss,fff}"]%newline' />
          <footer type="log4net.Util.PatternString" value="[/task]%newline" />
          <conversionPattern value="%-5level %date{yyyy/MM/dd_HH:mm:ss,fff} [%thread] %logger [%property{NDC}] - %message%newline" />
        </layout>
        <!-- 出力するログ レベルのフィルタ -->
        <filter type="log4net.Filter.LevelRangeFilter">
          <levelMin value="INFO" />
          <levelMax value="FATAL" />
        </filter>
      </appender>
     
      <!-- イベント ログ出力用 -->
      <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
        <!-- イベント ログ上のアプリケーション名 -->
        <applicationName value="AppName" />
        <!-- 出力文字列のフォーマット -->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%-5level %date{yyyy/MM/dd_HH:mm:ss,fff} [%thread] %logger [%property{NDC}] - %message%newline" />
        </layout>
        <!-- 出力するログ レベルのフィルタ -->
        <filter type="log4net.Filter.LevelRangeFilter">
          <levelMin value="ERROR" />
          <levelMax value="FATAL" />
        </filter>
      </appender>
     
      <!-- デフォルトの出力設定 -->
      <root>
        <level value="ALL" />
        <appender-ref ref="ConsoleAppender" />
        <appender-ref ref="DailyFileAppender" />
        <appender-ref ref="EventLogAppender" />
      </root>
    </log4net>
  </configuration>


 (3)AssemblyInfo.cs へ下記の内容を追加。
 
  // [AssemblyInfo.cs]
  // Log4Net の設定
  //
  // ConfigFile を指定しない場合は、このプロジェクトの app.config を使用する。
  // 開発環境下では、proj/ の config ファイルを proj/bin/Debug/ の exe から
  // 参照するので、この設定になる。デプロイ時は要変更。注意すること。
  [assembly: log4net.Config.XmlConfigurator(ConfigFile = @"../../log4net.config", Watch = true)]
  
  ※log4net.configファイルを出力ディレクトリへコピーするので、
  ConfigFile = @"../../log4net.config" を ConfigFile = @"log4net.config" へ変更。
  
  
 (4)使用するクラスへ下記を記述する。
 
  // [ロギングするクラス]
  // フィールド
  private static readonly log4net.ILog logger =
  log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

  //メソッド内などのログをとりたい場所で...
        logger.Debug("logger.Debug");
        logger.Info("logger.Info");
        logger.Warn("logger.Warn");
        logger.Error("logger.Error");
        logger.Fatal("logger.Fatal");
        logger.ErrorFormat("DATA={0}/{1}", "AAA", "BBB");

 (5)出力結果
 
  [task time="13:42:28,046"]
  INFO  2007/11/29_13:42:28,437 [10] Test_log4net.Form1 [(null)] - logger.Info
  WARN  2007/11/29_13:42:28,640 [10] Test_log4net.Form1 [(null)] - logger.Warn
  ERROR 2007/11/29_13:42:28,640 [10] Test_log4net.Form1 [(null)] - logger.Error
  FATAL 2007/11/29_13:42:28,656 [10] Test_log4net.Form1 [(null)] - logger.Fatal
  ERROR 2007/11/29_13:42:28,656 [10] Test_log4net.Form1 [(null)] - DATA=AAA/BBB

 

イベント、コンソール(VS 上 [出力] ウインドウへの出力)へも出力。

設定等はこれからということで、とても便利ですね。