【C#】xUnitのタイムアウトは非同期メソッドにする必要がある
xUnitの動作について
xUnitのタイムアウトの挙動について調べたところ、非同期メソッドであるようでした。
テストコード
using System;
using System.Threading.Tasks;
using Xunit;
namespace XUnitTestProject1
{
public class WaitTests
{
[Fact(Timeout = 500)]
public void WaitBlocking()
{
Task.Delay(1000).Wait();
}
[Fact(Timeout = 500)]
public Task Direct()
{
return Task.Delay(1000).ContinueWith(t => throw new Exception());
}
[Fact(Timeout = 500)]
public async Task AsyncAwait()
{
await Task.Delay(1000);
}
[Fact(Timeout = 500)]
public async void AsyncAwaitVoid()
{
await Task.Delay(1000);
}
[Fact(Timeout = 500)]
public async Task AsyncWaitNothing()
{
Task.Delay(1000).Wait();
}
[Fact(Timeout = 500)]
public async void AsyncWaitVoidNothing()
{
Task.Delay(1000).Wait();
}
}
}
結果
タイムアウトで失敗してくれるのは非同期メソッドになっている3つだけでした。
また、非同期メソッドにしても内部でブロッキングして待っている場合はタイムアウトになりませんでした。
C:\\\\\\\\XUnitTestProject1.dll(.NETCoreApp,Version=v3.1) のテスト実行
Microsoft (R) Test Execution Command Line Tool Version 16.7.0
Copyright (c) Microsoft Corporation. All rights reserved.
テスト実行を開始しています。お待ちください...
合計 1 個のテスト ファイルが指定されたパターンと一致しました。
X XUnitTestProject1.WaitTests.AsyncAwait [1ms]
エラー メッセージ:
Test execution timed out after 500 milliseconds
X XUnitTestProject1.WaitTests.AsyncAwaitVoid [1ms]
エラー メッセージ:
Test execution timed out after 500 milliseconds
X XUnitTestProject1.WaitTests.Direct [1ms]
エラー メッセージ:
Test execution timed out after 500 milliseconds
テストの合計数: 8
成功: 5
失敗: 3
合計時間: 7.6350 秒
Author And Source
この問題について(【C#】xUnitのタイムアウトは非同期メソッドにする必要がある), 我々は、より多くの情報をここで見つけました https://qiita.com/naminodarie/items/9bb7f0f3dfbff5c87065著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .