gpt4 book ai didi

C# DispatcherHelper.CheckBeginInvokeOnUI 不会在 UnitTest 上运行

转载 作者:行者123 更新时间:2023-11-30 17:59:16 33 4
gpt4 key购买 nike

我在 C# 应用程序中将 DispatcherHelper.CheckBeginInvokeOnUI 用于 mvvm,我正在尝试使用它运行 msTests。我从调用 DispatcherHelper.CheckBeginInvokeOnUI(delegate {//do stuff }); 的 UnitTest 进行的任何调用从单个 UnitTest 调用它时工作正常(当然是在调用 DispatcherHelper.Initialize() 之后)。

但是,当单元测试在更大的上下文中运行时会出现问题——如果我运行该类的所有测试(没有一个需要使用 DispatcherHelper)

在没有初始化 DispatcherHelper 的情况下,当它到达委托(delegate)调用时,它会按预期抛出空异常,因此我需要初始化。在 UnitTest 中初始化它有问题吗?我只是无法想象为什么它会在单个单元测试的上下文中工作,但仅此而已。

谢谢!

最佳答案

编辑:真正的问题似乎是 MsTest 同时将单元测试扔到不同的线程中只是为了快速完成它们,并且调度程序的“初始化”具有以下代码:

Initialize()
{
if (UIDispatcher != null)
{ return null }
else // initialize
}

这意味着您只能在不清除它的情况下对其进行一次初始化,并且它最终只会为该线程进行初始化。然而,由于单元测试都在不同的线程上,您最终会遇到将所有调用传递给 Dispatcher 的问题。我试图找到一种内置的方法来“取消初始化”它(从而将 UIDispatcher 设置回 null),但正如 Will 所建议的那样,简单地编辑代码可能是最好的。

关于C# DispatcherHelper.CheckBeginInvokeOnUI 不会在 UnitTest 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400749/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com