導入
dotMemory ユニットは、一般的なユニットテストフレームワークと連携する追加フレームワークです。このフレームワークの目的は、コード内のあらゆる種類のメモリ問題をチェックするテストを作成できるようにすることです。たとえば、特定の種類のオブジェクトをメモリ内でチェックすることでメモリリークを特定するテストや、メモリトラフィックを追跡し、トラフィックがしきい値を超えた場合に失敗するテストなどです。つまり、dotMemory ユニットはメモリプロファイラの機能によってユニットテストフレームワークの可能性を拡張します。具体的には、dotMemory ユニットでは以下のことが可能です。
特定の種類のオブジェクトについてメモリをチェックします。
メモリトラフィックをチェックします。
メモリスナップショット間の差分を取得する
dotMemory (スタンドアロン .NET メモリプロファイラー)でさらに調査するためにメモリスナップショットを保存します。
dotMemory ユニットの仕組み
dotMemory ユニットは、NuGet パッケージ(英語)(Visual Studio を ReSharper または JetBrains Rider と一緒に使用する場合に便利)または zip パッケージ(スタンドアロンの dotMemory ユニットランチャーを使用する場合)として配布されます。
dotMemory ユニットサポートを使用してテストを実行するには、ReSharper ユニットテストランナーを使用できます。この場合、Visual Studio と ReSharper、JetBrains dotCover、または JetBrains Rider がマシンにインストールされている必要があります。もう 1 つのオプションは、スタンドアロンの dotMemory ユニットランチャー(NuGet パッケージと zip ファイルの両方で利用可能)を使用してテストを実行することです。dotMemory ユニットスタンドアロンランチャーを使用するでランチャーを使用する方法を学びます。
dotMemory ユニットパッケージをインストールすると、ReSharper/Rider のユニットテストメニューに dotMemory ユニットでユニットテストを実行する項目が追加されます。このモードでは、テストランナーは通常のテストロジックに加えて、dotMemory ユニットフレームワークの呼び出しも実行します。「通常の方法」(dotMemory ユニットをサポートしない方法)でテストを実行すると、設定に応じてテストが失敗するか、dotMemory ユニットの呼び出しが無視されます。
dotMemory ユニットは、MSTest、NUnit、xUnit.net を含むほぼすべての一般的な単体テストフレームワークで動作します。
それはどう見えますか?
フレームワークを簡単に紹介するために、次のテスト例を検討しましょう。
この NUnit テストはメモリから Foo 型のすべてのオブジェクトを選択し、そのようなオブジェクトがないことを表明します。このようなテストは、コード内でメモリリークを探すときに非常に一般的です。
dotMemory ユニットは、特定の Assert 構文の使用を強制するものではないことに注意してください。テストの対象となるフレームワークの構文を使用します。例: 表示されているアサーションは NUnit 構文を使用していますが、MSTest 用に簡単に更新できます *:
dotMemory ユニットを使用する場合
通常のユニットテストと同じように「メモリ」テストを使用します。
手動で問題(リークなど)を見つけたら、それをカバーするメモリテストを書きます。
プロアクティブなテスト用のテストを作成して、新しい製品機能によってメモリの問題が発生しないことを確認します。たとえば、オブジェクトがメモリに残っている、大量のメモリトラフィックが発生しているなどです。
入門
スナップショットとの互換性
保存先 | 開く | |||
dotMemory 10 – 2017.1 | dotMemory 2017.2 | dotMemory 2017.3 – 2019.1 | ||
dotMemory ユニット 1.0 – 2.3 | | | | |
dotMemory ユニット 2.4 | | | | |
dotMemory ユニット 3.0 – 3.2 | | | | |
関連ページ:
dotMemory ユニットスタンドアロンランチャーを使用する
スタンドアロンの単体テストランナー(Visual Studio や JetBrains Rider ではなく)を使用してテストを実行する場合、またはメモリテストを継続的インテグレーションビルドの一部にしたい場合は、スタンドアロンの dotMemory 単体ランチャー(dotMemoryUnit.exe コマンドラインツール)が必要です。dotMemoryUnit.exe はメディエーターとして機能し、特定のスタンドアロンユニットテストランナーを実行し、実行中のテストで dotMemory ユニット呼...
入門
以下の手順は、Visual Studio と ReSharper を対象に説明します。JetBrains Rider の説明書も同様です。スタンドアロンの dotMemory ユニットランチャーを使用したテストの実行の詳細については、「dotMemory ユニットスタンドアロンランチャーを使用する」を参照してください。1. テストプロジェクトに dotMemory ユニットをインストール:Visual Studio でテストプロジェクトを開きます。メニューを使って NuGet コンソールを開き...