TDD,Resharper,Visual Studio 2015,不是多项目友好的

时间:2016-03-10 14:02:18

标签: visual-studio ide tdd resharper

我有一个C#解决方案,我的单元测试项目(和几个生产逻辑项目)。每次我首先编写测试时,我都希望生成的代码能够进入正确的项目。

例如,如果我有一个名为" BusinessLogicA" (程序集和命名空间名称相似)我在单元测试项目中添加了一个refernece,在一些测试类中我有以下代码。

using ThisNameSpaceExist = BusinessLogicA;
....

var instanceOfAlreadyExistingClass = new ThisNameSpaceExist.AlreadyExistingClass();
var instanceOfNewClass = new ThisNameSpaceExist.NewClass();

AlreadyExistingClass存在且NewClass不存在,那么无论何时我尝试自动生成NewClass,它都会在UnitTest项目中创建。

namespace UnitTest.BusinessLogicA {
    class NewClass {

重要的是要注意,所有项目都使用相同的解决方案并且我引用项目(而不是构建的dll),因此应该将所有内容设置为在正确的位置创建类(在正确的项目内) )。

有没有办法启用/强制这种行为?
如果没有,任何关于如何以最简单的方式处理它的线索?

1 个答案:

答案 0 :(得分:1)

问题是,Resharper / Visual Studio / RandomTool如何知道生成的类应该去哪里?理想情况下,您的单元测试将具有与其测试的类相似的命名空间,例如:

namespace UnitTest.BusinessLogicA
namespace BusinessLogicA

所以请在磁盘上映射到这些位置,例如:

root\UnitTest\BusinessLogicA
root\BusinessLogicA

但是有数百种变体,我可以想到该工具必须足够聪明才能处理或提供一些配置。我不认为这是一个不可能的问题,但我不知道有任何工具可以做到这一点。

为了缓解这一点,我对自动生成的类有一个“手指宏”:

  1. 将光标放在自动生成的类名上(一旦您要求Resharper创建该类,它就在那里)。
  2. Ctrl + Shift + R R (打开重构上下文菜单,选择“移至文件夹“)
  3. 在出现的对话框中,删除路径的测试特定部分,该部分映射到我的解决方案的相应业务逻辑路径。
  4. 接受对话框。
  5. 我无法比这更快/更容易,所以当然我喜欢一个只是自动将它移动到正确位置的插件。