C#学习教程:MSTEST – 异步Testinitialize保证测试失败分享


MSTEST – 异步Testinitialize保证测试失败

只是想知道,如果有人这样想:

这是在TestInitialize中进行异步调用的错误设计,因为TestInitialize必须在任何TestMethod之前发生。

这可能是以任何方式进行异步TestInitialize的正确方法吗?

private int val = 0; [TestInitialize] public async Task TestMehod1() { var result = await LongRunningMethod(); val = 10; } [TestMethod] public void TestMehod2() { Assert.AreEqual(10, val); } 

任何想法?

可能最TestInitialize方法是让TestInitialize 启动异步操作,如下所示:

 [TestClass] public class UnitTestAsync { private Task val = null; [TestInitialize] public void TestInitializeMethod() { val = TestInitializeMethodAsync(); } private async Task TestInitializeMethodAsync() { return await LongRunningMethod(); } private async Task LongRunningMethod() { await Task.Delay(20); return 10; } [TestMethod] public async Task TestMehod2() { Assert.AreEqual(10, await val); } } 

你想要做的是使用.Result.Wait()同步阻止TestInitialize装饰方法。 您可以执行以下操作:

 private int val = 0; [TestInitialize] public void TestMehod1() { Task result = await LongRunningMethod(); result.Wait(); val = 10; } [TestMethod] public void TestMehod2() { Assert.AreEqual(10, val); } 

只需为各种初始化调用(每个返回任务)创建一个任务数组,然后使用Task.WaitAll()

上述就是C#学习教程:MSTEST – 异步Testinitialize保证测试失败分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

  [ClassInitialize()] public static void Initialize(TestContext context) { List tasks = new List(); tasks.Add(InitializeMethod1()); tasks.Add(InitializeMethod2()); Task.WaitAll(tasks.ToArray()); } public static async Task InitializeMethod1() { } public static async Task InitializeMethod2() { } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269687.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注