管理对c#单元测试的依赖性
我开始使用VisualStudio进行一些单元测试(不是TDD,现在只是编写一些测试),在错误地探索我的测试项目后,我脑海中出现了一个奇怪的问题 首先,我创建了一个WebAPI2项目,创建了我的模型、控制器和其他东西。我已经分离了我的存储库,配置了依赖注入,项目已经完全正常运行 之后,我创建了我的单元测试项目,添加了对前一个webapi项目的引用,为我的存储库创建了一个mock,实例化了我的控制器,将mock作为构造函数注入传递,调用了该方法并断言了结果。代码是功能性的,但当我编译时,它抱怨无法从System.Web.Http找到ApicController 这些尝试是:管理对c#单元测试的依赖性,c#,unit-testing,visual-studio-2012,C#,Unit Testing,Visual Studio 2012,我开始使用VisualStudio进行一些单元测试(不是TDD,现在只是编写一些测试),在错误地探索我的测试项目后,我脑海中出现了一个奇怪的问题 首先,我创建了一个WebAPI2项目,创建了我的模型、控制器和其他东西。我已经分离了我的存储库,配置了依赖注入,项目已经完全正常运行 之后,我创建了我的单元测试项目,添加了对前一个webapi项目的引用,为我的存储库创建了一个mock,实例化了我的控制器,将mock作为构造函数注入传递,调用了该方法并断言了结果。代码是功能性的,但当我编译时,它抱怨无法
- 我尝试的第一件事是,在“AddReference”上下文菜单中搜索依赖项。我添加了,但是版本不同,所以不起作用
- 第二件事起作用了,但很难看。再次进入“添加引用”上下文菜单,从Web Api项目浏览目录,选择bin文件夹并选择所有DLL。这很有效,但很糟糕,因为一旦我对该测试进行了版本转换,它将被破坏,因为它引用的路径可能在签出计算机上不可用
- 第三次尝试是从Web Api项目复制package.json并粘贴到单元测试项目上,然后在NuGet控制台“更新包-重新安装”上运行。第三种选择有效,但我不知道这是否是正确的方法
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项目时,默认情况下我具有所有这些依赖项:
当我创建一个新的单元测试项目时,我只有下图的前两个依赖项,第三个依赖项来自我的Web Api项目:
因此,我必须在单元测试项目中手动引用Web Api项目到单元测试的所有依赖项都能正常工作,或者有一些更智能的方法可以做到这一点?我很想知道是否有更智能的替代方案,但是的,通常我所做的只是手动将正确的依赖项添加到测试项目中 注意,对于NuGet,您可以轻松地在解决方案级别管理包,并确保将它们添加到两个项目中
我从来没有感觉到这种需要(无论如何,您的项目需要尽可能少的依赖项),但是如果您想要一个手动但稍微更有效的方法,那就是打开两个
csproj
文件并以这种方式同步引用。我很好奇是否有更智能的替代方案,但是是的,通常我所做的只是将正确的依赖项手动添加到测试项目中
注意,对于NuGet,您可以轻松地在解决方案级别管理包,并确保将它们添加到两个项目中
我从未感觉到这种需要(无论如何,您的项目需要尽可能少的依赖项),但是,如果您想要一个手动但稍微更有效的方法是打开两个
csproj
文件,并以这种方式同步引用。当您执行nuget安装时,请单击您的解决方案并点击此解决方案的manage nuget packages,然后始终确保您同时安装Web项目和测试项目。我不确定我是否理解底线问题。“怎么做”?在Visual Studio中选择“添加引用…”,或者在谈论软件包时使用NuGet。当您进行NuGet安装时,请单击您的解决方案并点击“管理此解决方案的NuGet软件包”,然后始终确保您同时安装Web项目和测试项目。我不确定是否理解底线问题。“怎么做”?在VisualStudio中选择“AddReference…”,或者在谈论包时使用NuGet。问题是,我的所有初始依赖项都是在启动新的WebAPI项目时创建的。我没有任何额外的依赖项可以通过NuGet安装,因为在创建项目时,所有必要的DLL都已经存在。然后,您需要使用“添加引用…”手动添加它们,或者求助于编辑csproj文件。问题是,我所有的初始依赖项都是在启动新的Web Api项目时创建的。我没有任何额外的依赖项可以通过NuGet安装,因为在创建项目时,所有必需的DLL都已经存在。然后,您需要使用“添加引用…”手动添加它们,或者求助于编辑csproj文件。