C# Windowsフォームの自動テスト化

Windowsフォームの自動テストは鬼門?

Windowsのフォームは、自動テストが書きにくい。
今まで失敗してきた歴史があるけど、今日初めてうまくいったので、ポイントをメモ。

プロジェクトの構成

アーキテクチャ
クライアントサーバー構成 イントラ内にサーバー構築
フレームワーク: 
クライアント側:.net2.0 サーバー側:.net3.5
DB:
SQL Server
構成ファイル
  • クライアントプロジェクトのapp.configを、テストプロジェクトで読み込む必要がある
    • 今回は試験的にまるっとコピった
    • <configuration>タグの先頭に<configSections>が来てないとだめ
コーディング
  • Formを画面に表示したいので、テストメソッド内でまずFormインスタンスを生成してShowする
  • ShowしたフォームにPrivateアクセスするため、Form_Accessor.AttachShadow(form)して、アクセサインスタンスを生成
  • アクセサインスタンスに対し、ボタンのPerformClickなどで操作を行う