.NET Core と .NET Standard の単体テストUnit testing in .NET Core and .NET Standard

.NET core では、簡単に単体テストを作成できます。.NET Core makes it easy to create unit tests. この記事では、単体テストについて紹介し、その他の種類のテストとの違いを示します。This article introduces unit tests and illustrates how they differ from other kinds of tests. ページの下部にあるリンクされたリソースは、テスト プロジェクトをソリューションに追加する方法を示します。The linked resources near the bottom of the page show you how to add a test project to your solution. テスト プロジェクトを設定した後は、コマンドラインまたは Visual Studio を使用して単体テストを実行することができます。After you set up your test project, you will be able to run your unit tests using the command line or Visual Studio.

ASP.NET Core プロジェクトをテストしている場合は、「ASP.NET Core の統合テスト」を参照してください。If you're testing an ASP.NET Core project, see Integration tests in ASP.NET Core.

.NET Core 2.0 以降では .NET Standard 2.0 がサポートされます。単体テストはそのライブラリを使用して説明します。.NET Core 2.0 and later supports .NET Standard 2.0, and we will use its libraries to demonstrate unit tests.

C#、F#、Visual Basic 向けに組み込まれている .NET Core 2.0 以降の単体テスト プロジェクト テンプレートを個人プロジェクトの開始点として使用することができます。You are able to use built-in .NET Core 2.0 and later unit test project templates for C#, F# and Visual Basic as a starting point for your personal project.

単体テストとはWhat are unit tests?

自動テストを備えることは、ソフトウェア アプリケーションを作成者の意図どおりに確実に動作させるための最良の方法です。Having automated tests is a great way to ensure a software application does what its authors intend it to do. ソフトウェア アプリケーションには複数の種類のテストがあります。There are multiple types of tests for software applications. 統合テスト、Web テスト、ロード テストなどが含まれます。These include integration tests, web tests, load tests, and others. 単体テストは、個々 のソフトウェア コンポーネントとメソッドをテストします。Unit tests test individual software components and methods. 単体テストでは、開発者のコントロール内のコードのみがテストされる必要があります。Unit tests should only test code within the developer’s control. インフラストラクチャの懸念事項をテストすべきではありません。They should not test infrastructure concerns. インフラストラクチャの懸念事項には、データベース、ファイル システム、ネットワーク リソースが含まれます。Infrastructure concerns include databases, file systems, and network resources.

テストを記述するためのベスト プラクティスもあります。Also, keep in mind there are best practices for writing tests. たとえば、テスト駆動開発 (TDD) では、チェックされるコードよりも前に単体テストが記述されます。For example, Test Driven Development (TDD) is when a unit test is written before the code it is meant to check. TDD は本を書く前にアウトラインを作成するのと似ています。TDD is like creating an outline for a book before we write it. 開発者が簡潔で読みやすく、効率的なコードを記述できるように支援します。It is meant to help developers write simpler, more readable, and efficient code.

注意

ASP.NET チームはこの規則に従って、開発者がテスト クラスとメソッドに適した名前を考えられるように支援します。The ASP.NET team follows these conventions to help developers come up with good names for test classes and methods.

単体テストを記述するときは、インフラストラクチャに対する依存関係を設けようとしないでください。Try not to introduce dependencies on infrastructure when writing unit tests. テストが低速で不安定になるため、これは統合テストで行います。These make the tests slow and brittle, and should be reserved for integration tests. アプリケーションでこれらの依存関係を回避するには、明示的な依存関係の原則に従い、依存関係の挿入を使用します。You can avoid these dependencies in your application by following the Explicit Dependencies Principle and using Dependency Injection. 個別のプロジェクトの単体テストを統合テストと区別することもできます。You can also keep your unit tests in a separate project from your integration tests. これにより、単体テスト プロジェクトとインフラストラクチャ パッケージの間に参照や依存関係がなくなります。This ensures your unit test project doesn’t have references to or dependencies on infrastructure packages.

次の手順Next steps

.NET Core プロジェクトでの単体テストの詳細については、次を参照してください。More information on unit testing in .NET Core projects:

次に対する .NET Core 単体テスト プロジェクトがサポートされます。.NET Core unit test projects are supported for:

また、次から選択することもできます。You can also choose between:

次のチュートリアルでさらに詳しく学習できます。You can learn more in the following walkthroughs:

次の記事でさらに詳しく学習できます。You can learn more in the following articles: