![]() |
1
7
@德普林顿@史蒂文:如果我们开始在代码中加入这种东西
我们有数千个“单元”测试,然后我们的测试开始运行到几分钟而不是几秒钟。例如,如果您有1000个单元测试,那么如果有人在测试代码库中添加了Thread.Sleep,那么您的测试很难在5秒内运行。 我认为这是一种糟糕的做法,除非我们明确地进行集成测试。
这是我对如何实施的建议
注意,契约已经被修改为接受Bar构造函数中的isScheduler(用于依赖注入),IEnumerable现在被传递给IBar.Start方法。我希望这能解释为什么我做了这些改变。 测试速度是这样做的第一个也是最明显的好处。这样做的第二个也是可能更重要的好处是,在代码中引入更复杂的并发性,这使得测试非常困难。IScheduler接口和TestScheduler允许您运行确定性的“单元测试”,即使在面对更复杂的并发时也是如此。 |
![]() |
2
0
你的测试使用了太多的实现细节,
|
![]() |
3
0
Thread.Sleep()绝对不是个好主意。我读了好几遍“真正的应用程序是睡不着的”。你可以这样认为,但我同意你的说法。尤其是在单元测试期间。如果您的测试代码创建了错误的失败,那么您的测试是脆弱的。 我最近写了一些测试,正确地等待并行任务完成执行,我想我会分享我的解决方案。我意识到这是一个旧的职位,但我认为它会为那些寻找解决方案提供价值。
internal access修饰符用于CountdownEvent的原因是,当单元测试需要访问属性和方法时,我通常将它们设置为internal。然后,我在被测试的程序集中添加一个新的程序集属性
在本例中,如果Foos中有3个foo对象,footcountdown将等待3次信号通知。
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |