相关疑难解决方法(0)

Visual Studio:是否有"移动类到不同的命名空间"重构?

我正在做一些架构清理,涉及将一堆类移动到不同的项目和/或命名空间.目前我正在手动移动文件,构建,然后根据需要手动添加使用Foo语句来解决编译错误.有人知道这样做的更聪明的方法吗?(我们是CodeRush和Refactor!商店,但我很想知道Resharper是否支持这个)

refactoring visual-studio

66
推荐指数
5
解决办法
4万
查看次数

如何组织单元测试,不要让重构成为一场噩梦?

我目前组织单元测试的方法归结为以下几点:

  • 每个项目都有自己的专用项目和单元测试.对于项目BusinessLayer,有一个BusinessLayer.UnitTests测试项目.
  • 对于我想要测试的每个类,测试项目中有一个单独的测试类放在完全相同的文件夹结构中,并且与测试中的类完全相同.对于一类CustomerRepository命名空间下BusinessLayer.Repositories,有一个测试类CustomerRepositoryTests的命名空间BusinessLayerUnitTests.Repositories.

每个测试类中的方法遵循简单的命名约定MethodName_Condition_ExpectedOutcome.因此,类CustomerRepositoryTests包含一类测试CustomerRepositoryGet定义方法如下所示:

[TestFixture]
public class CustomerRepositoryTests
{
    [Test]
    public void Get_WhenX_ThenRecordIsReturned()
    {
        // ...
    }

    [Test]
    public void Get_WhenY_ThenExceptionIsThrown()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法对我很有用,因为它使得对某些代码的定位测试非常简单.在相反的网站上,它使代码重构变得非常困难,应该是:

  • 当我决定将一个项目分成多个较小的项目时,我还需要拆分我的测试项目.
  • 当我想要更改类的名称空间时,我必须记住更改测试类的名称空间(和文件夹结构).
  • 当我更改方法的名称时,我必须完成所有测试并在那里更改名称.当然,我可以使用搜索和替换,但这不是很可靠.最后,我仍然需要手动检查更改.

有没有组织单元测试仍然让我找到测试特定的代码迅速的一些巧妙的方式,并在同一时间更借本身对重构?

或者,是否有一些,呃,也许是Visual Studio扩展,这将允许我以某种方式说"嘿,这些测试是针对方法的,所以当方法的名称发生变化时,请非常友好并改变测试" ?说实话,我正在认真考虑写自己的东西:)

c# tdd nunit unit-testing code-organization

12
推荐指数
1
解决办法
2160
查看次数