このシリーズでは BotBuilder v4.5 で新たに追加されたユニットテストのフレームワークを見ていきます。
BotBuilder のユニットテスト全体の流れについては Bot Builder v4 でのテストシリーズ も併せて参照してください。
拡張機能のアップデートとプロジェクトの作成
Visual Studio 用にユニットテストを含んだテンプレートが公開されています。こちらを使って新しいプロジェクトを作成してみます。
1. Visual Studio 拡張機能 | 拡張機能の管理より、「Bot Framework v4 SDK Templates for Visual Studio」のバージョンを確認。古い場合は最新へ更新。
2. 新規プロジェクトより bot を検索。「Core Bot with Tests (Bot Framework v4)」を選択して「次へ」。
3. 任意の名前を付けて作成。ここでは MyBotWithUnitTest とした。ソリューション作成後、ボットのプロジェクトとユニットテストプロジェクトがあることを確認。
4. 中身はこれまでの CoreBot と同様、航空チケットの予約ボットであることを確認。まだ LUIS など必要なコンポーネントを設定していないため、このままでは動作しないが、今回はユニットテスト用として作成したため、このままにしておく。
ユニットテストを実行
ユニットテストは LUIS やデータベースなど、外部の依存サービスがない状態で動作すべきであり、BotBuilder v4.5 のテストフレームワーくもそのように設計されています。まずはこの状態でテストが動作するか見ていきましょう。
1. ソリューションをビルドしてエラーがないことを確認。表示 | テストエクスプローラーを選択。
2. 既存のテストが多数ある事を確認して、「すべてのテストを実行」をクリック。
ベースとなるユニットテストフレームワーク
BotBuilder v4.5 では xUnit が使われています。xUnit は NUnit と並んでよくつかわれているテストフレームワークであるため、使ったことがある開発者の方も多いと思いますが、次回以降で使い方を見ていきます。
テスト対象
テストの対象は Bot クラス、コントローラー、ダイアログ の 3 つです。今後中身は別途確認してきます。
使われているフレームワーク
ユニットテストのフレームワークとしては xUnit
サービスの各種モックには Moq ライブラリが使われています。
xUnit はこちらのクイックスタートを参照
Moq はこちらのクイックスタートを参照
まとめ
これまで自力でセットアップしてきたユニットテストが、SDK の一部となり正式なフローも公開されたことで、よりテストしやすくい、またサンプルも見つけやすくなりました。次回はテストの内容についてみていきます。