我们有一组集成测试,这些测试在数据库中创建数据,并且需要清理数据作为拆卸的一部分。我知道这些数据对于特定测试始终是唯一的,因此不会影响后续测试。因此,我想在背景线程中处理清理这些数据以减少对其他测试的影响。
我不愿尝试包括System.Web
组件并使用HostingEnvironment.QueueBackgroundWorkItem
来做到这一点,但由于怀疑这是不起作用的:
system.invalidoperationException:"由于对象的当前状态,操作无效。'
我尝试将代码放置在异步方法中,而不是等待,但是怀疑已完成测试并在完成拆除之前终止了该过程。
那么,实现我的目标的最佳方法是什么?
如果您使用的是xunit或mstest,则您的 can 具有async
测试方法,但它们必须返回Task
对象:
[TestMethod]
public async Task TestFooAsync() {
Int32 someValue = await someSource.GetValueAsync();
Assert( 123, someValue );
}
使用 async void
表示"火和孔",这就是为什么仅在事件手柄中使用而不应测试的原因。