2011-05-05 58 views
9

我试图建立一种便于Visual Studio解决方案:从NuGet安装NUnit后,如何强制TestDriven.Net使用NuGet引用的NUnit DLL?

我想:

  • 要将所有引用和依赖 我的解决方案的 目录结构

  • 使用的能力的根目录下,“测试用 NUnit的”,命令当我在TestDriven.NET 提供的项目上右击 时。

我不想:

  • 要使用NUnit的版本 TestDriven.NET安装本身

我想:

  • 的,“测试随着NUnit的”,命令来使用 的NUnit的版本的NuGet下我 解决方案的子目录安装我

更多细节,我已经尝试过:

当您安装TestDriven.NET会将自己版本的NUnit像一个路径:

  • \程序文件(x86)\测试Driven.NET 3 \ NUnit的\ 2.5

当您使用的NuGet安装NUnit的最新版本,它会将NUnit的像一个路径:

  • Solution_root \ \包NUnit.2.5.10.11092

NuGet会自动为您添加对\ packages \ NUnit.2.5.10.11092 \ lib \ nunit.framework.dll的引用。如果你碰巧想用TD.Net菜单轻松地执行NUnit测试,那么这个引用是毫无价值的,因为TD.Net实际上并没有使用NuGet刚刚为你设置的NUnit dll。

  • 如何强制TestDriven.Net的使用菜单中引用的DLL的NUnit我的解决方案的路径,而不是它在\程序文件(x86)\ TestDriven.NET 3安装\ NUnit的\ NUnit的DLL?

OR

  • 如果这是不可能的,有一个简单的快捷键/菜单命令来执行与下我的解决方案文件夹,而无需使用TestDriven.Net NUnit的的SpecFlow测试?

我为什么要这么做?

我用NuGet安装了NUnit,这样我就可以将测试框架库保存在我的解决方案和源代码控制之内。我需要能够在我的解决方案路径(Solution_root \ packages \ NUnit.2.5.10.11092)下引用像nunit.framework.dll这样的东西,而不是从(\ Program Files(x86)\ TestDriven.NET 3 \ NUnit \ 2.5中引用它) 。

我已经尝试过的建议在这里:

我也不想在手动复制和取代的TD.Net安装为不允许源控制下的解决方案,相关文件和隔离NUnit的文件。

+0

如果这是不可能的,任何人都可以推荐一种方法:安装xUnit。net,NUnit或MSTest通过NuGet,SpecFlow使用该解决方案中安装的NuGet包,并且通过简单的右键单击或接近自动的方式告诉Visual Studio“立即运行所有这些测试”? – Kerry 2011-05-22 16:38:04

+0

这不是对这个确切问题的答案,但这里是我现在使用的解决方法: 右键单击包含规格/测试的类库并选择属性。选择生成事件选项卡。 在生成后事件命令行补充一点: $(SolutionDir)\包\ NUnit.2.5.10.11092 \工具\ nunit.exe $(TARGETPATH)/运行 替换\ NUnit.2.5.10.11092 \与任何确切版本NuGet安装在你的sln下。 运行后构建事件:成功构建。 每次构建好之后,NUnit GUI将启动并在dll中运行测试。 – Kerry 2011-06-12 05:15:02

回答

3

不知道这正是你追求的,但这里有云:

在Visual Studio中(我使用2010):

  1. 转到驱动工具 - >选项 - >测试 - >测试运行程序
  2. 本节列出了TD.NET附带的所有预配置测试运行程序。
  3. 运行Regedit。
  4. 转到:* HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ MutantDesign \ TestDriven.NET \ TestRunners * 这将在32位操作系统下有所不同。
  5. 添加一个新的密钥NUnit 2.5.X(只需复制另一个密钥并更改所需的任何设置)。

  6. 重新启动Visual Studio。

  7. 在步骤#1的菜单下,您会发现新的测试跑步者。
  8. 点击它并保存。

从现在开始,您的测试将与您配置的测试运行器一起运行。

+0

谢谢。我认为你的方法对于一个特定的VS解决方案(我还没有尝试过)可以很好地工作,但是每次都需要为每个新VS项目进行配置(将注册表中的键/路径指向NUnit特定位于每个VS解决方案下的NuGet“packages”目录下的文件)。我正在寻找一种方法来为任何/所有VS项目自动连线。 – Kerry 2011-08-28 17:11:46

+0

注册表中的设置是每台计算机的全局设置。 VS从那里读取它并让你选择这个选项。 – 2011-08-28 18:31:20