ユニットテストフレームワークはMSTest V2に進化し、テスト作成に使うAPIも.NETとUWPで共通になった。パラメタライズドテストが.NETでも簡単に書けるようになり(次の画像の赤枠内)、ますます便利になっている。
加えて、Enterpriseエディションにはライブユニットテストが搭載された。これは、指定したユニットテストを自動実行するものだ。コードがコンパイル可能な状態になるたびに、バックグラウンドで自動的にテストが実行される(次の画像)。リファクタリングするときにありがたい機能だ。
ライブユニットテストの様子(Enterpriseエディションのみ)
1枚目: ライブユニットテストを開始する(赤丸内)。なお、赤枠の部分は、DataTestMethod属性とDataRow属性を使ったパラメタライズドテストの指定である(「NUnitのTestCase属性に相当」といった方が分かりやすいだろうか)。1枚目の画像では、2つのテストケースを定義している。また、テストメソッドごとにライブユニットテストから除外するかどうかを指定できる。なお、.NET Coreのテストはサポートされていない。
2枚目: バックグラウンドでユニットテストが実行されて、左側のテストエクスプローラーの表示が変わる。緑色はテスト合格だ。テストエクスプローラーには1件と表示されているが、その[FizzBuzzTest]の部分(赤丸内)をクリックするとそこに含まれている全てのテストケースのテスト結果が表示される(3枚目/4枚目の画像を参照)。また、ライブユニットテストが有効になっていると、コードの行頭にはスペースが開けられ、緑のチェックマーク(=その行はテスト時に実行され、全て成功した)、または赤の×印(=その行はテスト時に実行され、少なくとも1つのテストケースが失敗した)が表示される。
3枚目: 3つ目のテストケースを追加した(赤丸内)。ちょっとすると(ファイルを保存していなくても)、自動的にテストが実行される。追加したテストケースに対して製品コードが未対応であったため、テストエクスプローラーの表示は赤色に変わってテストの失敗を知らせている。
4枚目: 製品コードを修正した(赤丸内)。ここでは、製品コードを[定義をここに表示(Alt+F12)]機能を使ってテストコード上に表示し、編集している。またちょっとすると自動的にテストが実行され、テストエクスプローラーの表示が緑色に戻った。
なお、ライブユニットテストを有効にしているときでも、手動でテストを実行できる。ここで示したようなテストファーストの手順で進めるときは、編集後に保存した後のタイムラグを待つか、手動でテスト実行操作をするか、微妙なところがある。テストの変更を伴わないリファクタリングのときは、どんどん書き換えていけるのでとても助かる。
.NET Standard Libraryは、これからポータブルクラスライブラリ(PCL)を置き換えていくものだ。今までならPCLのプロジェクトを作っていた場面で、これからは.NET Standardのプロジェクトの作成を検討してほしい。
VS 2017の新しくプロジェクトを作るダイアログで、.NET Standardを対象とするクラスライブラリがサポートされた(次の画像)。
.NET Standardとは、簡単にいってしまえば、.NETを実装するさまざまなフレームワークに共通する基本クラスライブラリを定義することで、これまでに種類が多くなりすぎたPCL(のプロファイル)を整理しようというものだ。名前が似ている.NET Coreとの関係は、ブログ記事「Introducing .NET Standard」の2枚の図を見てもらうと分かりやすい(次の画像)。
ここまではVS 2017やプログラミング言語における新機能について主に見てきた。次ページ以降では、どんなプラットフォームに向けてアプリ開発を行えるのかを見ていこう。
Copyright© Digital Advantage Corp. All Rights Reserved.