TDD时提取类。 如何测试新提取的类?

所以我在我的主类中有几个方法使用矩阵来设置或关闭像素。 我已经运行了所有当前的测试,所以,我已经决定已经抽出一些与矩阵相关的逻辑,并创建一个Matrix类。

我的问题是,除了我目前为我的SUT课程进行的测试(我刚刚开始,所以我目前只有一个课程,SUT的主要课程),我应该为它创建unit testing吗? 如果是这样,你怎么做? 我的意思是,我现在是否让我所有的代码都是现在的,创建makeunit testing逐一进行测试第一种方法,直到我看到我拥有所有function上我想要的只有那里我重构我的代码? 我只是直接创建Matrix类,只是确保旧测试仍然通过,一切都好吗?

谢谢

基本上是后者。 没有必要仅仅因为它被定义为一个独特的类来测试一个类。 如果您在不添加任何function或以其他方式更改行为的情况下进行重构,则添加测试的唯一原因是您对代码的某个部分缺乏信心。 否则,代码已经在测试中,并且它通过另一个类进行测试的事实应该无关紧要。

话虽这么说,有时候代码的结构发生了很大的变化,以至于出于组织目的,你想要移动测试,这样你就可以知道这段代码实际上是从哪里进行测试的。 但这是一个不同的问题,说“这是一个独立的单位,所以它必须有独立的测试。”

一个相对常见的提示,是时候发布一个类是你有你想要测试的私有方法。 在那种情况下,让测试真正推动重构。 在(尚未写入)类中编写(当前私有)方法的测试; 将新类的实例提供给现有类,并将私有方法移动到新类中,使其随时公开。

对于这种重构,编译器应该指导您。 把你想要的一切都带到一个单独的类中并编译。 它将告诉您在生产代码和测试中需要使用新类的位置。 重构所有内容,直到它编译并重新测试。

正确的方法是逐个移动方法/属性,这取决于你对这个过程的舒适程度。

编辑您只需要创建足够的测试来覆盖代码。 为了组织起见,您应该将主测试类中的测试移动到一个单独的类中,但这就是它。 如果重构过程需要您编写更多代码(例如,创建新类实例的方法),您也应该为此编写测试。

假设你从一个类和一个测试类开始:

OneBigClass -Method1 -Method2 -Method3 OneBigClassTest -Method1ShouldDoSomething -Method2ShouldDoSomething -Method3ShouldDoSomething 

重构之后,这就是你的类应该是这样的:

 OneBigClass -Method1 -Method2 SmallerClass -Method3 OneBigClassTest -Method1ShouldDoSomething -Method2ShouldDoSomething SmallerClassTest -Method3ShouldDoSomething