我想使用異步方法測驗方法。但是,當我運行測驗時,UnityEditor 被阻塞。
我認為,這個問題是因為異步方法。我不知道如何解決這個問題。
Unity 版本:Unity 2020.3.33f1
public async static Task<string> GetAsync() {
// Do something
HttpResponseMessage response = await request.GetAsync(..);
string responseData = await response.Content.ReadAsStringAsync();
return response Data
}
...
public string GetData() {
Task<string> res = GetAsync();
return res.Result;
}
////////////////// Test Code //////////////
[Test]
public void Test_GetData() {
...
string res = GetData()
...
}
uj5u.com熱心網友回復:
如果不對其進行測驗,您需要在所有地方使用 async/await。
使用 async/await 時,正如您為回傳字串型別所做的任務一樣,但對于 void 方法,您只需使用任務。
比方說
public static async Task<string> GetAsync()
{
return await Task.FromResult("test");
}
你的測驗應該是這樣的:
[Test]
public async Task Test_GetAsync()
{
var result = await GetAsync();
Assert.AreEqual("test", result);
}
如果我們采用您的代碼
public async static Task<string> GetAsync() {
// what ever
.....
return responseData
}
測驗將是:
[Test]
public async Task Test_GetData() {
...
string res = await GetData()
...
}
如果您的測驗專案是較舊的 .net 框架,您可以按照此答案的建議將其升級到較新的版本。否則,如果您被鎖定并且無法升級,您可以做一些我不建議的事情,因為這個答案提到了。
[Test]
public void Test_GetData()
{
var result = GetAsync().GetAwaiter();
Assert.AreEqual("test", result.GetResult());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/467339.html
