ssh*_*shm 15 c# tfs unit-testing microsoft-fakes visual-studio-2013
我的项目有1000多个单元测试,在本地机器上,所有测试都在不到10秒的时间内完成.但是当他们在TFS Build上运行时,某些测试的运行速度明显慢于其他测试.其中3个在大约1-2分钟内运行,其他4个在5-30秒内运行,其他的则在几分之一秒内运行.我注意到所有那些较慢的测试都使用来自Microsoft Fakes的假货,而且每一个都是第一个在它的类中运行的.但是很多其他测试也使用假货(一些更密集)并且定期运行.我想知道可能导致这种减速的原因以及如何解决这个问题.
编辑:我注意到,在无模拟测试之后,每个较慢的测试都会运行.也许这种减速是由ShimsContext的初始化引起的.在我的测试类中,ShimsContext是在TestInitialize和TestCleanup方法上创建和处理的.这会对性能产生重大影响吗?
请参阅以下链接: https://softwareengineering.stackexchange.com/questions/184834/how-do-we-make-unit-tests-run-fast
http://arlobelshee.com/the-no-mocks-book/
这些链接表明,快速进行测试可能很困难。解耦是关键。模拟/伪造是可以的,但是可以通过重构来做得更好,使模拟/伪造变得不必要。