【发布时间】:2011-05-05 00:30:46
【问题描述】:
我正在尝试设置一个 Visual Studio 解决方案来促进:
BDD
使用 SpecFlow http://www.specflow.org/
如 TekPub 上所述:http://tekpub.com/view/concepts/5
我想要:
保留所有引用和依赖项 在我的解决方案的根源下 目录结构
使用“测试”的能力 NUnit",右键单击时的命令 在我的 TestDriven.NET 项目中 提供。
我不想要:
- 使用 NUnit 的版本 TestDriven.NET 自行安装
我确实想要:
- “使用 NUnit 测试”命令使用的版本 NuGet 安装在我的下的 NUnit 我的解决方案子目录
更多细节和我已经尝试过的:
当您安装 TestDriven.NET 时,它会将自己的 NUnit 版本放置在如下路径中:
- \Program Files (x86)\TestDriven.NET 3\NUnit\2.5
当您使用 NuGet 安装最新版本的 NUnit 时,它会将 NUnit 放置在如下路径中:
- Solution_root\packages\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 的菜单使用我的解决方案路径中引用的 NUnit dll,而不是它安装在 \Program Files (x86)\TestDriven.NET 3\NUnit\ 下的 NUnit dll?
或
- 如果这不可能,是否有一个简单的快捷键/菜单命令可以在不使用 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) 引用它.
我已经尝试过这里的建议:
它似乎仍在启动 TestDriven.Net 的 NUnit 版本,而不是为我安装的 NuGet。
我也不想手动复制和替换 TD.Net 安装的 NUnit 文件,因为这不允许特定于解决方案的依赖文件和源代码控制下的隔离。
【问题讨论】:
-
如果这不可能,任何人都可以推荐一种方法:通过 NuGet 安装 xUnit.net、NUnit 或 MSTest,让 SpecFlow 使用安装在解决方案下的 NuGet 包,并简单地右键单击还是以接近自动的方式告诉 Visual Studio“立即运行所有这些测试”?
-
这不是这个确切问题的答案,但这是我现在一直在使用的解决方法:右键单击包含规范/测试的类库并选择属性。选择构建事件选项卡。在生成后事件命令行中添加: $(SolutionDir)\packages\NUnit.2.5.10.11092\tools\nunit.exe $(TargetPath) /run 将 \NUnit.2.5.10.11092\ 替换为安装在下的任何确切版本的 NuGet你的 sln运行构建后事件:成功构建。每次构建良好后,NUnit GUI 都会启动并运行 dll 中的测试。
标签: visual-studio unit-testing nunit nuget testdriven.net