|
|
1
83
通过使用Visual Studio单元测试框架,您不需要自己初始化调度器。您完全正确,调度程序不会自动处理其队列。 您可以编写一个简单的助手方法DispatcherUtil.doEvents(),告诉调度程序处理其队列。 C代码:
你也发现这个班在 WPF Application Framework (WAF) . |
|
|
2
21
我们解决了这个问题,只需模拟出接口后面的调度器,并从IOC容器中拉入接口。界面如下:
下面是在IOC容器中注册的真实应用程序的具体实现
下面是我们在单元测试期间提供给代码的一个模拟代码:
我们还有一个变种
|
|
|
3
16
您可以使用分派器进行单元测试,只需要使用分派器框架。下面是我的一个单元测试示例,它使用DispatcherFrame强制执行Dispatcher队列。
我知道了 here . |
|
|
4
2
调用Dispatcher.BeginInvoke时,将指示Dispatcher在其线程上运行委托。 当线程空闲时 . 运行单元测试时,主线程将 从未 无所事事。它将运行所有测试,然后终止。 要使这个方面单元可测试,您必须更改基础设计,使其不使用主线程的调度程序。另一种选择是利用 system.componentModel.backgroundWorker 修改不同线程上的用户。(这只是一个例子,根据上下文,这可能是不适当的)。 编辑 (5个月后) 我在不知道调度程序框架的情况下写了这个答案。我很高兴在这个单调度器框架上出错,结果发现它非常有用。 |
|
|
5
2
创建双色框架对我来说非常有用:
|
|
|
6
2
如果要在
jbe's answer
到
任何
调度员(不仅仅是
用途:
要与当前调度程序一起使用:
我更喜欢这种变体,因为它可以在更多的情况下使用,使用更少的代码实现,并且具有更直观的语法。
关于其他背景
|
|
|
7
2
我通过在单元测试设置中创建一个新的应用程序来解决这个问题。 然后,任何访问application.current.dispatcher的测试类都将找到一个调度器。 因为在AppDomain中只允许一个应用程序,所以我使用了assemblyinitialize并将其放入自己的类applicationinitializer中。
|
|
|
8
1
如果您的目标是在访问时避免错误
这可能或不适合您的需要,至少对我来说,它已经足够测试任何与DependencyObject/WPF相关的内容了。 如果你想试试这个,我可以给你指出几种方法:
|
|
|
9
0
我在用
使用方式如下:
|
|
|
10
0
我建议在DispatcherUtil调用doEventsSync()中再添加一个方法,只需调用Dispatcher来调用而不是BeginInvoke。如果您真的需要等待调度程序处理所有帧,那么就需要这样做。我将此作为另一个答案发布,而不仅仅是一个评论,因为整个班级都很长:
|
|
|
11
0
我通过将调度器包装在自己的IDispatcher接口中,然后使用MOQ来验证对它的调用是否成功完成了这一点。 IDispatcher接口:
真正的调度员实现:
正在测试的类中初始化调度程序:
模拟单元测试中的调度程序(在本例中,我的事件处理程序是onMyEventHandler,并接受一个名为MyBoolParameter的bool参数)
|
|
|
12
0
在支持调度程序的专用线程上运行测试如何?
|
|
|
13
0
我迟到了,但我是这样做的:
|
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |
|
|
Barta · WPF MVVM不更新视图 1 年前 |
|
|
Denis Ivanov · WPF控件在属性更改时不会更新 1 年前 |
|
|
codymanix · WPF:TextBlock周围可见小边框? 1 年前 |
|
|
Nostromo · 来自背景对象的工具提示 1 年前 |
|
|
Nuvolari · 从可观测集合添加/删除时出现对象处理异常 2 年前 |
|
|
CCarter · 只能在设计器中DependencyObject的DependencyProperty上设置显示“Binding”的WPF ICommand DependencyProperties[重复] 2 年前 |
|
|
Thern · 在UI线程(WPF)上的void方法中调用异步函数 2 年前 |