VS2010とVS2012のプロセスの差異とデバッグ実行自動化の注意
状況(どんなテストをやっているか)
Azureプロジェクトを自動テストするために1テストケースで次の手順を自動化している。
- プロジェクトで使うファイル(C#, F#, config, xml)を入れ替え
- VisualStudioを起動
- VisualStudioをデバッグ実行 -> AzureEmulatorが起動してデプロイされる
- REST APIのテストを実行
- 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
です。
結果としての手順
まとめ
なんにせよ、テスト実行前のデプロイのクリーンは必須