2009-12-23 49 views
0

我想提高进行TDD时的往返时间。我想解决方案的总编译时间会更长,但这并不重要。如何提高往返时间做TDD

背景: 当我看编译时我等待我的单元测试运行期间的输出窗口,我看到一些时间只花了验证取决于项目并不需要是构建。

声明: 胀裂Testproject(今天约20K线和依赖于其它九个项目) 成更小的测试项目,其中每个testproject测试代码的一小部分,就会少给我依赖,从而增加编译时间我目前正在使用的testproject。

观看次数?

回答

0

我会沿着将其分解为更小的项目的路线,以确保依赖关系也下降。循环引用是最重要的事情要小心。

编译时间可能会变长,但总是可以通过投资更快的硬盘驱动器,更快的CPU和更多的RAM来解决。同样,如果你在CI服务器上运行它,你可以加快编译时间,因为你可以为每个项目创建运行并行任务,而不是像VS一样正常运行,而是同步运行,你可以构建每个项目它们是异步的,然后异步运行。

4

通常,我建议为每个程序集创建一个测试项目,因此它将对测试程序集具有一个依赖关系。如果要测试的组件名称为MyCompany.MyProduct.Common,则测试项目将为MyCompany.MyProduct.Common.Test

此外,您可以使用持续集成让生成服务器在成功编译后执行所有适当的单元测试。

+0

是的,每个实际组件的一个测试组件是要走的路。 – Paolo 2009-12-23 09:13:19

+0

你如何处理常见的测试代码? 制作一个像MyCompany.MyProduct.TestBase这样的专用项目? – Slampen 2010-01-07 09:33:21

1

叫我疯了(我已经习惯了!)。

我把测试放在与被测代码相同的程序集中。

命名空间N.M中的代码在命名空间N.M.Tests中得到测试。

以这种方式,internal类型可以很容易地进行单元测试,这是适合于TDD的。

由于单元测试没有额外的程序集依赖关系的复杂性,您可以避免原始问题。

我听到的主要异议是您不想将测试发送给客户。然而,除非带宽或存储受到特别限制,否则我并没有看到航运测试是有害的真正原因。

+0

坏主意,违背单元测试的一般建议。 – Finglas 2009-12-23 12:32:16

+0

@Dockers:你能更具体吗?你为什么认为这是一个坏主意?你认为单元测试的一般建议是否违背了?那是建议单位测试建议还是TDD建议? – 2009-12-23 17:05:47

+0

实际上并不是一个坏主意,即使你知道很多东西,这也是一个糟糕的主意,并且赞赏你这样做。 – Slampen 2009-12-24 11:35:00