Inv*_*ion 7 c# nunit unit-testing moq
我是TDD的新手,但已经使用它足够长的时间来理解如何使用模拟,存根,依赖注入,控制反转来解决"类似"问题......但由于某种原因,我对使用依赖注入感到非常不安并传入'IThread'(或类似的).
给它一些基本的上下文 - 我试图将单元测试添加到遗留应用程序,我不确定如何单元测试一个类的构造函数产生两个线程.
是使用依赖注入的唯一选择吗?
如果是这样,线程带来的功能呢?因为它代表线程都运行while(true)循环并且永远不会退出循环(除非应用程序正在终止).在循环内部有合理的代码块,这是我真正想要测试的代码.
更糟糕的是,我不想将所有功能从循环中提取到公共方法中(我只测试公共方法,因为我的测试存在于另一个项目中)因为它会真正减少类的易用性代码中的其他地方.
有什么建议?
Could you pull the functionality into internal methods and use InternalsVisibleTo instead? Even if you'd really want them to be private, this is a reasonable compromise solution.
如果你的线程通常会永远运行,那确实很难测试...而且听起来你真的应该单独测试"线程做什么",如果它们不依赖于单独的线程.
偶尔有用的一个选项是拥有一种IScheduler界面 - 要求在任何适合的地方执行操作; 生产者可以创建一个新线程,但是您的测试可以在现有线程内(或在您在测试代码中控制的线程上)运行该操作.我不确定这适合你的情况,线程将永远运行,但你可能想在其他情境中考虑它.
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |