NUnitで(あるいは他のフレームワークで)非同期メソッドをテストするにはどうしたらいいですか?
2023-09-01 18:01:15
質問
ASP.NET Web APIアプリケーションで、非同期メソッドを備えたApiControllerを使用して、次のようなものを返しています。
Task<>
オブジェクトを返し
async
キーワードでマークされています。
public class MyApiController : ApiController
{
public async Task<MyData> GetDataById(string id)
{
...
}
}
ApiControllerの非同期メソッドのNUnitテストはどのように書けばよいのでしょうか?もし他のテストフレームワークを使う必要があるのなら、それも歓迎します。私は一般的に.NETユニットテストにかなり新しいので、私はベストプラクティスを学ぶことに興味があります。
どのように解決するのですか?
NUnit 2.6 には、タスクを返す非同期メソッドをテストするためのサポートが組み込まれていないようです。現在考えられる最良の選択肢は、Visual Studio 自体の UnitTesting フレームワークまたは xUnit.net を使用することです。 を使うことです。どちらも非同期テストをサポートしているので .
Visual StudioのUnitTestingフレームワークを使うと、このように非同期テストを書くことができます。
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class TestAsyncMethods
{
[TestMethod]
public async Task TestGetBinBuildById()
{
...
var rslt = await obj.GetAsync();
Assert.AreEqual(rslt, expected);
}
}
関連
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] 'Newtonsoft.Json' には 'Microsoft.CSharp' の依存関係がすでに定義されています。
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] 非同期Task<T>メソッドを同期的に実行するにはどうしたらいいですか?
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイラーエラーメッセージ。コンパイラはエラーコード -532462766 で失敗しました。
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] .net 4.5アップグレード後、System.Web.Httpが見つからない
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] ファイルまたはアセンブリ 'System.Data.SQLite' をロードできませんでした。
-
[解決済み] SQL Server Compact EditionデータベースのLINQ to SQLで、"Row not found or changed "例外を解決するにはどうすればよいですか?
-
[解決済み] このコンピュータには、.NET Framework 4.6またはそれ以降の更新プログラムがすでにインストールされています。
-
[解決済み] 列挙型を文字列に変換する
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?