【发布时间】:2015-10-30 11:11:12
【问题描述】:
我开始使用 Visual Studio 使用单元测试(不是 TDD,目前只是编写一些测试)进行一些测试,在我的测试项目中发现一个错误后,我想到了一个奇怪的问题。
首先,我创建了一个 Web Api 2 项目,创建了我的模型、控制器和其他东西。我已经分离了我的存储库,配置了依赖注入并且项目功能齐全。
之后,我创建了我的单元测试项目,添加了对先前 Web Api 项目的引用,为我的存储库创建了一个模拟,实例化我的控制器,将模拟作为构造函数注入传递,调用方法并断言结果。该代码可以正常工作,但是当我编译时,它抱怨无法从 System.Web.Http 找到 ApiController。
尝试是:
我尝试的第一件事是在“添加引用”上下文菜单中搜索依赖项。我添加了,但版本不同,所以无法正常工作。
第二件事有效,但非常难看。再次进入“添加引用”上下文菜单,从 Web Api 项目浏览目录并选择 bin 文件夹并选择所有 dll。这行得通,但很糟糕,因为一旦我对该测试进行版本化,就会因为引用结帐计算机上可能不可用的路径而被破坏。
第三次尝试是从 Web Api 项目中复制 package.json 并粘贴到单元测试项目中,然后在 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 项目的所有依赖项才能使单元测试正常工作,还是有一些更聪明的方法可以做到这一点?
【问题讨论】:
-
当您执行 nuget 安装时,单击您的解决方案并点击管理此解决方案的 nuget 包,然后始终确保您为 Web 项目和测试项目安装
-
我不确定我是否理解底线问题。 “如何”?好吧,在 Visual Studio 中选择“添加引用...”,或者如果您正在谈论包,则使用 NuGet。
标签: c# unit-testing visual-studio-2012