Azure DevOps プロジェクトを ASP.NET Core 2.1 へアップグレード（テスト機能の追加）

#はじめに
　[前回](https://qiita.com/Aida1971/items/d80a8d7a7b354949cbe7)、[前々回](https://qiita.com/Aida1971/items/c57c4e61ba15e1d04043)に続き、今回は [Azure DevOps のパイプライン](https://azure.microsoft.com/ja-jp/services/devops/pipelines/)に統合テストを組み込んでいきたいと思います。

#DevOps Pipelines へのテストの組み込み
　最初に Azure DevOps の Release パイプラインに Visual Studio Test のタスクを組み込んでいきます。

1. Releases の Edit をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/998fea68-4206-1e87-88f5-82a6936d45b7.png)

2. 赤枠の job/tasks をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/6001c32c-2b2b-b638-eac1-777a22901895.png)

3. Agent pool で ホストを [Hosted VS2017] に切り替えます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/fb17a304-d5fb-deec-dddc-8bba7b03062e.png)

4. タスクに Visual Studio Test を追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/9e6ec56e-de32-4c15-76d9-fb047944ead0.png)

5. 追加した Visual Studio Test の赤枠のプロパティを設定していきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/7d4ff0d8-a8b7-2799-8d60-35c09b52979a.png)
**Settings file :** $(System.DefaultWorkingDirectory)/Drop/drop/FunctionalTests/functionalTests.runsettings
**Override test run parameters :** WebApps の環境に合わせて入力します。

#ローカル端末でのテストの実行
　ひな形の ASP.NET Core プロジェクトには UnitTests（単体テスト）と FunctionalTest（機能テスト）が最初から組み込まれています。これらを [Azure Pipelines](https://azure.microsoft.com/ja-jp/services/devops/pipelines/) で実行する前に、まずはローカル端末で問題なく動作する事を確認します。

1. 最初にローカルの開発端末で**テスト**（アプリケーションではない）をデバッグ実行してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/82cf34df-c25c-11ea-aaa7-6701bda61a04.png)

2. ChromeDriver が見つからないというエラーが出た場合は、http://chromedriver.storage.googleapis.com/index.html よりダウンロードし、Windows フォルダなどパスが通っている場所に配置します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/a50f7f5b-3a69-b89e-8a35-ddaac9be79b0.png)

3. Chrome の自動実行が可能となった後、webAppUrl が見つからないというエラーが出るかもしれません。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/e212c732-d657-52a7-5e31-b083df163d68.png)
　上記エラーが出た場合、Visual Studio の [テスト] - [テスト設定] メニューを開き、functionalTests.runsettings が有効になっている（チェックされている）事を確認します。設定がない場合は、その下の [テスト設定ファイルの選択] から functionalTests.runsettings を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/a2c31ee3-de14-30ef-82f3-38fc7c3ee2f8.png)

4. 事前にテスト対象の ASP.NET Core アプリケーションを起動しておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/faff158b-ada6-b90f-28a1-893e7025068c.png)
アクセス先のURLとポート番号を確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/ef306c8a-90a4-2324-8b9b-affbedec0396.png)
functionalTests.runsettings のポート番号を環境に合わせて変更します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/10fed0c7-192e-1340-4eca-0e4b2c4927b1.png)

5. 再度ローカルの開発端末でテストをデバッグ実行してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/82cf34df-c25c-11ea-aaa7-6701bda61a04.png)
以下のようにテストエクスプローラで全てのテストが成功していれば正常完了です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/f0a89cb5-3f0d-ff9f-272c-b6f9c91bf012.png)

6. **最後に、変更をコミットし Repos へ同期します。**同期手順は、[こちら](https://qiita.com/Aida1971/items/d80a8d7a7b354949cbe7#%E5%A4%89%E6%9B%B4%E6%B8%88%E3%81%BF%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92-repos-%E3%81%B8%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88)を参考にしてください。コミット完了後、自動的にビルドパイプラインが実行され Build, Release タスクが走ります。

#結果確認
###成功例
　以下は Release タスクが全て成功し、正常に完了した場合の結果例となります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/ad82b915-0c2a-32cf-76ee-51c7e945fac5.png)

###失敗例
　以下は、[前回](https://qiita.com/Aida1971/items/d80a8d7a7b354949cbe7#%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E8%A7%A3%E6%B1%BA)のように WebApps の .NET Core バージョンが 1.1 のために[実行時エラー](https://camo.qiitausercontent.com/9536475f0701c226fe0d548d46f24a21641494b8/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3136363733322f62633839373061632d346336662d346639322d376232642d3036366137376466366263322e706e67)が出た時のテスト結果となります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/c745cdc9-2889-8b10-3c66-b8be77723c5f.png)

　詳細をクリックすると、Web サイトへの呼び出しに対して、下記赤枠のように \<Home Page - ASP.NET CORE> という期待した応答結果ではなく、空文字が返されたためエラーと判断しています。このようにテストタスクをパイプラインに組み込むことで、実行時エラーを自動的にチェックする事が可能となります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/166732/8a30fa8a-1366-d640-ed42-c11148ea9d86.png)