代码之家  ›  专栏  ›  技术社区  ›  Craig P. Motlin

我怎样才能对刚才更改的源文件运行单元测试呢?

  •  6
  • Craig P. Motlin  · 技术社区  · 17 年前

    有没有一种方法可以让蚂蚁运行单元测试,只为它构建的Java类?例如,如果myClass.java已经过时,Ant将构建myClass.Class。之后,我希望它还运行myclasstest和myclasstestsuite(如果它们存在的话)。它不必基于命名约定。我可以使用注释或其他有效的方法。

    编辑: 有几个人插嘴说这是个坏主意。它 是的,如果我计划在不运行所有单元测试的情况下签入。我的主项目有超过16k个单元测试,运行大约需要20分钟。我会在签入之前运行它们,但每次更改文件时运行整个套件是完全不实际的。对不起,我应该多说几句。

    7 回复  |  直到 17 年前
        1
  •  6
  •   Ramon    17 年前

    我不建议采用这种方法,很有可能会因副作用而导致遗漏错误。

        2
  •  4
  •   Grzegorz Oledzki    17 年前

    不是那么容易…

    看一看 Atlassian Clover . 它有你梦寐以求的功能,但它不是免费的。

        3
  •  4
  •   Mike Cooper    17 年前

    对我来说这是个坏主意。当然,更改的源文件需要测试,但也需要测试依赖于这些文件的任何文件,以及依赖于这些文件的任何文件等等。您必须跟踪哪个文件依赖于哪些其他文件,这是一个需要解决的相当大的问题。

    在我看来,如果项目足够大,在尝试解决测试的依赖树方面有很大的收获,那么项目可能太大了?也许现在是时候把它分成几个单独的项目一起工作了,每个项目都可以单独测试。

        4
  •  3
  •   Jonathan Holloway    17 年前

    看看infinitest,它是一个用于eclipse(和intellij)的插件,它基于您刚刚更改的源文件运行测试:

    Infinitest Website

    有关概述,请参见此处的屏幕广播:

    Screencast Overview

        5
  •  3
  •   Jon Strayer    17 年前

    我不知道用蚂蚁做这件事,但在Eclipse中你可以做到这一点。

    kent beck编写了一个名为junit max的eclipse插件,在保存代码后运行单元测试。它首先运行“最有可能失败”的测试。

    JUnit Max

        6
  •  0
  •   Paul Morie    17 年前

    我想和其他人说,这是你要避免的。仅为已更改的特定类运行测试用例会带来这样的风险:您将进行更改,这将中断对未更改但依赖于某些已更改代码的类的测试。

    这是一个风险,即使您在编程到接口和模拟单元测试中的依赖关系方面很激进。例如,静态实用程序类可能有很多类直接使用它们。在这里,很容易想象这样一种情况:您可以对静态实用程序方法进行更改,确保该方法的测试工作正常,如果您没有运行所有测试,则会中断大量调用该方法的代码。

        7
  •  0
  •   sleske    17 年前

    好吧,如果遵循命名约定的话,你可以用变量来实现。获取已更改文件的列表,并运行相应的测试。但我建议不要这样做,就像其他答案解释的那样。