![]() |
1
3
等等,我会这么做的。AFAIK(我不确定)异步方法使用等待句柄来触发该方法。 我不知道你为什么认为比赛条件会发生,除非你在WaitOne通话中给出了异常短的时间。我会花4-5秒在waitone上,这样你就可以确定它是否坏了,这不仅仅是一场比赛。
这两种方法都可以正常工作,可以在Thread2开始等待之前设置等待句柄,并为您处理所有事情。 |
![]() |
2
3
编辑 OP评论说,他们正在尝试对MyMethod和worker.DoWork方法进行单元测试。 在这种情况下,您将不得不依赖于调用DoWork方法的可见副作用。根据你的例子,我在这里不能提供太多,因为没有一个道工的内部工作是暴露出来的。 编辑2 [OP]由于某些原因,主线程或定位销线程的执行时间都不超过1000毫秒。 这不会发生。当您在AutoResetEvent上调用WaitOne时,线程将进入睡眠状态。在设置事件或超时期限到期之前,它不会收到处理器时间。其他线程获得一个重要的时间片并导致错误的失败是完全可能的。但我认为这不太可能。我有几个测试是以相同的方式运行的,我没有得到很多这样的错误失败。我通常选择约2分钟的超时时间。 |
![]() |
3
2
在实际服务中,它将使用BeginInvoke执行,从而异步执行。然后创建同步调用委托的测试服务版本。
此服务的非同步实现如下所示:
此服务的同步实现如下所示:
ActionRunner不需要测试;这只是方法调用上的一层薄薄的外衣。 |
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
![]() |
shilin agre · 在Python中测试修饰函数 2 年前 |
![]() |
SlipScout · Unittest只传递单个值,而不是获取多个值 2 年前 |
![]() |
Alex · 从实际对象的实例返回默认模拟结果 2 年前 |