F#でNUnitテストコードを記述する方法1

F#でNUnitテストコードを記述する方法

F#とNUnit単体テストを記述する方法を手探りで調べました。

前提

を利用しております。その他の環境では確認しておりませんのでご了承下さい。

テスト対象プログラム

テストされるプログラム(F#ライブラリ)をTestedProgramとします。
[ファイル]->[新規作成]->[プロジェクト]->[他の言語]->[Visual F#]->[F# ライブラリ]
を選択し、名前を[TestedProgram]として下さい。

被テストコードの記述

Module1.fsを開き、デフォルトで入力されている、

module Module1

を削除して下記を入力して下さい。

namespace TestedNamespace
  module TestedModule=

    let square x = x * x
    let squareF (x : int) = (float x) * (float x)

    let rec qsort =
      function
      | [] -> []
      | pivot :: rest ->
      let is_less x = x < pivot in
      let left, right = List.partition is_less rest in
        qsort left @ [pivot] @ qsort right
  • int -> int の squareメソッド
  • int -> float の squareFメソッド
  • a' list -> a' list の qsortメソッド

上記3つのメソッドに対して、NUnitテストコードを書いて行きます。
長くなるので、このエントリでは準備のみ記述します。
今回はテストコードの書き方を検証するので、この時点で上記プログラムをビルドし、F# Interactiveにおいて正常に動作することを確認しておいてください。
F# Interactiveは[表示]->[その他のウィンドウ]->[F# Interactive]
を選択することで起動できます。

テストプログラム

テストするプログラム(F#ライブラリ)をTestingProgramとします。
[ファイル]->[追加]->[新しいプロジェクト]->[他の言語]->[Visual F#]->[F# ライブラリ]
を選択し、名前を[TestingProgram]として下さい。

テスト対象プログラムの選択

ソリューションエクスプローラー内のTestingProgramの[参照設定]を右クリックし、
[参照の追加]よりテスト対象プログラムを選択します。
今回は当然、[Projects]->[TestedProgram]ですね。

NUnitFrameworkへの参照の追加

TestingProgramの[参照設定]を右クリックし、[参照の追加]->[Assemblies]->[Extensions]->[nunit.framework]を追加します。

テストコードの記述

TestingProgram内のModule1.fsを開き、デフォルトで入力されている、

module Module1

を削除して下記を入力して下さい。

module TestingNamespace.TestingModule

open System
open NUnit.Framework
open TestedNamespace.TestedModule

[<TestFixture>]
type MyTest() =

  [<Test;Description("example description")>]
  member x.TestSquare1 () =
    Assert.AreEqual (4, square 2)

この時点で、squareメソッドに対するテストが一つ書けました。

テストする

[ビルド]->[ソリューションのビルド]でビルドを行います。
ここで、エラーが出るなら、タイプミスなどの可能性があります。


長くなったので、続きは次のエントリにて。