1

为什么,当我在 VS2008 中进行单元测试时——无论是使用运行还是调试——VS 坚持重建测试项目的所有依赖项,即我在单元测试中测试的项目?

有时它们并没有改变——我刚刚修改了一些单元测试。或者,也许我已经修改了其中一个程序集——但它坚持要重建所有这些程序集。

我在单元测试项目中对我的其他项目有正常的项目引用。

我们感激地收到任何建议,因为这会减慢我们尽可能有效地进行 TDD 的能力。

谢谢!

4

1 回答 1

1

好的,我至少找到了问题的原因以及对此有些不满意的解决方法!

我首先添加了一个新的单元测试项目,然后从我的主解决方案中添加了对它的单个项目引用。我发现我的数据(业务实体)项目遇到了我所描述的问题,并且因为我的所有其他程序集在​​某种程度上都依赖于我的数据项目,所以重新编译的事实会导致所有其他程序集。

为什么那个总是重新编译?这与实体框架有关。创建一个空项目,并向其中添加一个空的 EF 模型 - 即使您没有更改它,它也总是会重新编译。然后,这具有导致任何依赖项重新编译的连锁反应,可能是因为数据组合的元数据已更改。

我发现的解决方法是添加对数据程序集的直接程序集引用,而不是添加项目引用。不利的一面是,您不能直接在 VS2008 中执行 Go To Definition 等操作 - 但鉴于我们很少对特定程序集执行此操作,所以这不是一个大问题。

这样做,我将运行单个单元测试的构建时间从大约 20 秒减少到了 7 秒——当你每天编写几十个单元测试时,这会产生巨大的差异!

如果有人对EF模型为什么这样做有任何想法,我真的很想听听......

于 2009-11-13T02:11:46.850 回答