うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

VS2010とVS2012のプロセスの差異とデバッグ実行自動化の注意

状況(どんなテストをやっているか)

Azureプロジェクトを自動テストするために1テストケースで次の手順を自動化している。

  1. プロジェクトで使うファイル(C#, F#, config, xml)を入れ替え
  2. VisualStudioを起動
  3. VisualStudioをデバッグ実行 -> AzureEmulatorが起動してデプロイされる
  4. REST APIのテストを実行
  5. VisualStudioをプロセスをkillして終了

あとはこれらをパラメタライズ?していくかんじ。

挙動の差異(ハマった原因)

で、まだあらゆる環境では試していないのですが、手元の環境だと「VisualStudioをプロセスをkillして終了」がVS2010とVS2012で違う。
具体的には
VS2012 -> プロセスをkillするとAzureEmulatorのデプロイも削除される
VS2010 -> プロセスをkillするとAzureEmulatorのデプロイは削除されない


どうハマったか

Emulatorのモニターを見ていればすぐに気づくんですが、見ていないことが多いので


のようなことが起きます。
つまり、前のテストでデプロイしたものが残っているまま次のテストケースを実行するのでデプロイするたびにIPアドレスが変わる。
ex.)
1ケース目 -> 127.0.0.1:81
2ケース目 -> 127.0.0.2:81
3ケース目 -> 127.0.0.3:81


こうなっていると、RESTのテストが一件も成功しないという。。。


解決方法

テストの最初でAzureEmulatorのデプロイを毎回削除します。

CSRun /removeAll

です。


結果としての手順

  1. CSRun /removeAll でAzureEmulatorのデプロイを全て削除する
  2. プロジェクトで使うファイル(C#, F#, config, xml)を入れ替え
  3. VisualStudioを起動
  4. VisualStudioをデバッグ実行 -> AzureEmulatorが起動してデプロイされる
  5. REST APIのテストを実行
  6. VisualStudioをプロセスをkillして終了

まとめ

なんにせよ、テスト実行前のデプロイのクリーンは必須