.NET でのテスト
この記事では、テストの概念と、コードの検証に使用できるさまざまな種類のテストについて説明します。 .NET アプリケーションのテストには、.NET CLI や統合開発環境 (IDE) など、さまざまなツールを使用できます。
テストの種類
アプリケーション コードが作成者の意図どおりに動作するように自動テストを行うのは、最良の方法です。 この記事では、単体テスト、統合テスト、およびロード テストについて説明します。
単体テスト
"単体テスト" とは、"作業単位" とも呼ばれるソフトウェアの個々のコンポーネントまたはメソッドを動かすテストです。 単体テストでは、開発者の管理下でのみ、コードをテストする必要があります。 インフラストラクチャに対する懸念はテストしません。 インフラストラクチャに対する懸念とは、データベース、ファイル システム、ネットワーク リソースなどとのやりとりです。
単体テストの作成の詳細については、テスト ツールに関する説明を参照してください。
統合テスト
"統合テスト" とは、2 つ以上のソフトウェア コンポーネントの連携機能、つまりそれらの "統合" を動かすという点で単体テストとは異なります。単体テストでは個々のコンポーネントに着目するのに対し、これらのテストでは、テスト対象のシステムの広範な部分を動作させます。 多くの場合、統合テストにはインフラストラクチャに対する懸念も含まれます。
ロード テスト
"ロード テスト" では、アプリケーションを使用する同時ユーザー数や、やりとりに対するアプリの即時応答性など、システムが指定の負荷を処理できるかどうかを判断します。 Web アプリケーションのロード テストの詳細については、「ASP.NET Core のロード テスト/ストレス テスト」を参照してください。
テストに関する留意点
テストの記述には、ベスト プラクティスがあります。 たとえば、テスト駆動開発 (TDD) では、単体テストを記述してからチェック対象のコードを記述します。 TDD は、本を書く前にアウトラインを作成するのと似ています。 開発者が簡潔で読みやすく、効率的なコードを記述できるように支援します。
テスト ツール
.NET は、複数の言語を使用できる開発プラットフォームであり、C#、F#、Visual Basic 向けのさまざまな種類のテストを作成できます。 これら各言語に、いくつかのテスト フレームワークを選択できます。
xUnit
xUnit は、.NET 用の無料のオープン ソースのコミュニティ向け単体テスト ツールです。 xUnit.net は、NUnit v2 の最初の発明者によって記述された、.NET アプリを単体テストする最新のテクノロジです。 xUnit.net は、ReSharper、CodeRush、TestDriven.NET および Xamarin と共に動作します。 これは、.NET Foundation のプロジェクトであり、その行動規範の下で動作します。
詳細については、次のリソースを参照してください。
NUnit
NUnit は、.NET の全言語で使用できる単体テスト フレームワークです。 最初に JUnit から移植された現在の運用リリースは、さまざまな .NET プラットフォーム向けの多数の新機能とサポートで書き換えられています。 これは、.NET Foundation のプロジェクトです。
詳細については、次のリソースを参照してください。
MSTest
MSTest は、.NET の全言語で使用できる Microsoft のテスト フレームワークです。 これは拡張可能で、.NET CLI でも Visual Studio でも動作します。 詳細については、次のリソースを参照してください。
.NET CLI
.NET CLI からソリューションの単体テストを実行するには、dotnet test コマンドを使用します。 .NET CLI では、統合開発環境 (IDE) からユーザー インターフェイスで使用できる機能の大部分が公開されています。 .NET CLI はクロスプラットフォームであり、継続的インテグレーションおよび配信パイプラインの一部として使用できます。 .NET CLI は、一般的なタスクを自動化するスクリプト化されたプロセスで使用されます。
IDE
Visual Studio、Visual Studio for Mac、Visual Studio Code のどれを使用していても、機能のテストには、グラフィカル ユーザー インターフェイスが用意されています。 IDE には CLI よりも、Live Unit Testing など多くの機能があります。 詳細については、Visual Studio でのテストの追加と除外に関する説明を参照してください。
関連項目
詳細については、以下の記事を参照してください。