【问题标题】:TDD, Resharper, Visual Studio 2015, are not multi projects friendlyTDD、Resharper、Visual Studio 2015 对多项目不友好
【发布时间】:2016-03-10 14:02:18
【问题描述】:

我有一个 C# 解决方案,其中包含一个用于单元测试的项目(以及几个生产逻辑项目)。每次我先写一个测试,我都希望生成的代码能进入正确的项目。

例如,如果我有一个名为“BusinessLogicA”的项目(程序集和命名空间名称类似),并且我在我的单元测试项目中添加了一个引用,那么在某个测试类中我有以下代码。

using ThisNameSpaceExist = BusinessLogicA;
....

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

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

namespace UnitTest.BusinessLogicA {
    class NewClass {

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

有没有办法启用/强制这种行为?
如果没有,有什么最简单的处理方法吗?

【问题讨论】:

    标签: visual-studio ide tdd resharper


    【解决方案1】:

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

    namespace UnitTest.BusinessLogicA
    namespace BusinessLogicA
    

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

    root\UnitTest\BusinessLogicA
    root\BusinessLogicA
    

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

    不过,为了缓解这一点,我为自动生成的类设置了一个“手指宏”:

    1. 将光标放在自动生成的类名上(只要您要求 Resharper 创建类,它就在那里)。
    2. Hit Ctrl+Shift+R, R (打开重构上下文菜单,选择“移动到文件夹")
    3. 在出现的对话框中,删除路径中特定于测试的部分,该部分映射到我的解决方案的相应业务逻辑路径。
    4. 接受对话。

    我没有比这更快/更简单的方法了,所以我当然喜欢一个能自动将其移动到正确位置的插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多