C#でのテスト(1) テスト用プロジェクト(?)

C#でのテスト(0) まずは環境に引き続いて今回はテストプロジェクトの作り方を。
といっても、実際にはテストプロジェクトをテスト対象となるプロジェクトと分けてしまうと、internalのテストができないため、テスト対象のプロジェクト内にテスト用のディレクトリを作ってしまう方がいい*1
コメント欄で教えてもらった*2が、InternalsVisibleToAttributeを使えばinternalのテストが可能らしい。ただ、nant等のビルドツールの強制をしたいので、複数人での開発には同じプロジェクト内にテストを作成する方針は変更しないことにする。

たとえば、TestSampleというプロジェクトを作ったとすると、ソリューションエクスプローラー上では

  • ソリューション'TestSample'
    • TestSample
      • Properties
      • 参照設定
      • Tests
        • UnitTest
          • HelloWorldTest.cs
      • HelloWorld.cs
      • Program.cs

このような感じとなる。


開発中にテストを実行する際は、TestDriven.NETを使ってソリューションエクスプローラーでTestsフォルダやUnitTestフォルダを選択し、コンテキストメニューからRun Test(s)を実行する。
そのほか、ファイルごとにRun Test(s)したり、ソースコード上の任意のメソッドのスコープのコンテキストメニューからRun Test(s)したり、いろいろな起動方法が使用可能だ。


ソースコード上のコンテキストメニューからRun Test(s)を実行する場合、テストクラスもしくはテストメソッドである必要があるが、TDDで開発を行っていると直前のテストをテスト対象のコード上から実行したいことがよくある。
そういう場合には、Run Test(s)ではなく、Repeat Run Testが使える。


今回はここまで。
次回はnantを使って、このある意味ごちゃまぜのプロジェクトからリリース用の実行ファイルをビルドする方法などを予定してます。

*1:別プロジェクトで作る方法がネット上ではよく見られるような気がするが、nant等のビルドツールを使う場合は分ける利点はないと思う

*2:id:YokoKenさんありがとう