2009-06-24 19 views
5

有没有一种方法可以让蚂蚁运行单元测试只是为了构建它的java类?例如,如果MyClass.java过时,ant将生成MyClass.class。之后,我希望它也运行MyClassTest和MyClassTestSuite(如果它们存在的话)。它不必基于命名约定。我会很好地使用注释或任何其他方法。我如何才能运行单元测试只是源文件已更改?

编辑:有人说这是一个坏主意。它是,如果我计划没有运行所有的单元测试检查。我的主要项目有超过16k个单元测试,大约需要20分钟才能运行。我会在办理登机手续前运行它们,但每次更改文件时运行整个套件都是不切实际的。对不起,我应该给予更多的上下文。

回答

4

这不是那么容易......

看看Atlassian Clover。它有你梦想的功能,但它不是免费的。

6

我不会推荐这种方法,有很好的机会遗漏由副作用引起的错误。

3

看看Infinitest,它是运行基于源文件的测试的Eclipse(和IntelliJ)一个插件,你刚才改变:

Infinitest Website

有关概述见截屏在这里:

Screencast Overview

+0

Infinitest太棒了。没有它我就不会编码。 这是一个原因,我不能切换到NetBeans的 – 2010-06-11 15:27:31

+0

的截屏链路断开时 - 我在这里找到:http://improvingworks.com/products/infinitest/ – 2011-03-27 01:28:53

4

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

在我看来,如果这个项目足够大,在试图解决测试依赖树问题上有很大的收获,那么这个项目可能太大了?也许是时候把它分成独立的项目一起工作了,每个项目都可以彼此独立地进行测试。

0

我想和其他人说,这是你想避免的事情。仅对已更改的特定类运行测试用例引入了一种风险,即您将进行一项更改,该更改会打破对未更改的类进行测试,但对已更改的某些代码具有依赖性。

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

3

我不知道用ANT来做这件事,但是你可以在Eclipse中做这样的事情。

Kent Beck编写了一个名为JUnit Max的Eclipse插件,可以在保存代码后运行单元测试。它首先运行“最有可能失败”的测试。

JUnit Max

0

那么,你很可能使用的变量,如果你遵循命名约定做到这一点。获取已更改文件的列表,并运行相应的测试。但我会建议反对它,像其他答案解释。

相关问题