スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#入門 ツール編 その2 xUnit.net(2)

 さて前回はF# Interactiveを使って、手軽なテストをしてみましたが、今回はDLLファイル等を作成して、それに対してテストするという方法を紹介したいと思います。

テスト部分は、テスト対象の関数が定義されているファイルと(1)同一ファイル内(2)同一プロジェクトで違うファイル内(3)異なるプロジェクト(4)異なるソリューションというように色々選べるのですが、今回は「同一ファイル内の場合」を紹介します。


まずテスト部分は他の部分と分離した方がよいので、別モジュールでくるみます。
そしてunit->unit型のテスト用関数を書くのですが、其々のテスト用関数の先頭に[<Fact>]アトリビュートを付け加えます。たとえば次のようになります。

module module01

//今回は次の3行は特に必要なし
#if INTERACTIVE
#r @"c:\Program Files\xUnit-1.5\xunit.dll"
#endif

open Xunit

//テスト対象の関数
let extractBetween low high lst =
    lst |> List.filter(fun x -> low < x && x < high)


//テスト用関数

module MyTest00 =
   [<Fact>]
   let test1()=
     Xunit.Assert.Equal([3],extractBetween 2 4 [-1;2;3;5])

   [<Fact>]
   let test2() =
     Xunit.Assert.Empty(extractBetween 1 3 [0;4])

これでビルドしてdllファイルを作っておきます。(実行ファイルの場合はExeファイルになります。)

さて、テストを行うには、コマンドプロンプトでxuint-1.5フォルダ内にあるxunit.console.exeを使って、
xunit.console ファイル名と打ち込み実行する方法と、xuint.gui.exeを利用して、アプリケーション上で行う方法があります。(visual studio 2008ではxunit.installer.exeを実行することによってTestDriven.NETも利用できるようですが、未確認です。)
今回はxuint.gui.exeを利用してみます。
xunit.gui.exeをダブルクリックするとウィンドウが開きます。


xunit00.jpg 

Assenblyメニューからopenでコンパイルされたファイル(dllまたはEXE)を指定します。

これで左下のRun Allボタンを実行すると、テスト結果が表示されます。

xunit01.jpg

(異なるファイル、プロジェクトにテスト部分を置く場合も、テストする関数を含むモジュール、プロジェクトへの参照を、テスト側から設定して置いてから、テストの方をコンパイルし、その結果のDLLファイル等を読み込んでRun Allするだけです。)


次にアトリビュートの使い方の例を二つほど挙げておきます。
まず、テストをスキップする方法です。

関数test1()の上のアトリビュート部分を次のように変えておきます。

   [<Fact(Skip="今回はテストしない")>]
   let test1()=
     Xunit.Assert.Equal([3],extractBetween 2 4 [-1;2;3;5])

このようにしてRun Allボタンを押すと、OutPut部分には次のように表示されます。

module01+MyTest00.test1 : 今回はテストしない

次に関数の実行時間にタイムアウトを設定する方法です。

関数test1()を次のように変えておきます。

   [<Fact(Timeout=100)>]
   let test1()=
     System.Threading.Thread.Sleep(200);
     Xunit.Assert.Equal([3],extractBetween 2 4 [-1;2;3;5])

このようにしてRun Allボタンを押すと、OutPut部分には次のように表示されます。

module01+MyTest00.test1 : Test execution time exceeded: 100ms

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。