在TestInitialize中调用DMAC在设计上是不正确的,因为TestInitialize必须在任何TestMethod之前发生,并且具有固定的签名。
这是否也是让P2P测试初始化的正确方法?
private int val = 0;
[TestInitialize]
public async Task TestMehod1()
{
var result = await LongRunningMethod();
val = 10;
}
[TestMethod]
public void TestMehod2()
{
Assert.AreEqual(10, val);
}
有什么想法吗?
5条答案
按热度按时间kuhbmx9i1#
您的密码正确!
要澄清这个答案是5年,2个月后,最初的问题。在当时,使用
[TestInitialize]
可能是一个编译错误,但现在不是了。有可能让
[TestInitialize]
、[ClassInitialize]
和[TestMethod]
只是简单地使用await。正确使用javascript和await可能是最干净的方法。在我的代码中,我需要获得我们的类别结构,以便能够测试我的类是否与我们拥有的类别结构配合良好。
[TestInitialize]
在每个[TestMethod]
之前运行,因此根据我在这里尝试测试的内容,最好只加载一次,然后进行所有Assert,而不是多次支付加载时间。但您需要小心,使测试不会相互影响,以获得一致和正确的结果。需要注意的是,这不再是一个单元测试,因为我正在测试与外部服务的集成。
tf7tbtn22#
可能最简洁的方法是让
TestInitialize
start 异步操作,如下所示:ni65a41a3#
你想做的是使用
.Result
或.Wait()
同步阻塞TestInitialize
修饰的方法。您可以执行以下操作:ccgok5k54#
只需为各种初始化调用(每个返回任务)创建一个任务数组,然后使用Task.WaitAll()
pb3s4cty5#
确保你使用了正确的签名,比如
public async Task SetupTest()
,而不是[TestInitialize]
方法的public async void SetupTest()
。