管理对c#单元测试的依赖性

时间:2015-10-30 11:11:13

标签: c# unit-testing visual-studio-2012

我开始使用Visual Studio进行单元测试(不是TDD,只是在这一刻编写一些测试)进行一些测试,在我的测试项目出错后,脑子里出现了一些奇怪的问题。

首先,我创建了一个Web Api 2项目,创建了我的模型,控制器和其他东西。我已经分离了我的存储库,配置了依赖注入,项目完全正常运行。

之后,我创建了我的单元测试项目,添加了对前一个Web Api项目的引用,为我的存储库创建了一个模拟器,实例化了我的控制器,将模拟器作为构造函数注入传递,调用方法并断言结果。代码是功能的,但是当我编译时,它抱怨无法从System.Web.Http找到ApiController。

尝试是:

  • 我尝试过的第一件事就是在“添加引用”上下文菜单中搜索依赖项。我补充说,但版本不同,所以没有用。

  • 第二件事有效,但非常难看。再次进入“添加引用”上下文菜单,从Web Api项目浏览目录并选择bin文件夹并选择所有dll。这很有效,但是非常糟糕,因为一旦我对该测试进行了版本测试,就会被破坏,因为它引用了一个可能在结帐计算机上不可用的路径。

  • 第三次尝试是从Web Api项目复制package.json并粘贴Unit Test项目并在NuGet控制台“Update-Packages -Reinstall”上运行。第三种选择有效,但我不知道这是否是正确的方法。

TL; DR;

你们如何引用单元测试项目的所有DLL依赖项?

编辑:

我从编译器得到的错误是:

Error   1   The type 'System.Web.Http.ApiController' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.   C:\Users\fgadotti\Documents\Prototype\WeWorkout\WeWorkout\AnotherTest\UnitTest1.cs  13  13  AnotherTest

当我创建一个全新的Web Api项目时,我默认拥有所有这些依赖项: Dependencies from a fresh Web Api project

当我创建一个全新的单元测试项目时,我只有下面图像的前两个依赖项,第三个依赖项来自我的Web Api项目: Dependencies from a Unit Test project

那么,来自Web Api项目的所有依赖项我必须在单元测试项目中手动引用单元测试才能正常工作,或者有一些更聪明的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我很想知道是否有更明智的选择,但是,我通常只是将正确的依赖手动添加到Test项目中。

请注意,对于NuGet,您可以轻松管理解决方案级别的,并确保将它们添加到两个项目中。

我从来没有感觉到需要(你的项目需要尽可能少的依赖项),但如果你想要一个手动但稍微更有效的方法是打开两个interval文件并同步参考那样。