Java 如何找出源代码中的测试用例,并对它们进行分类?

Java 如何找出源代码中的测试用例,并对它们进行分类?,java,junit,Java,Junit,我正在处理一个有50000个源文件的大型项目,大约5000个测试分布在2000个类中。这些主要是JUnit3,还有少量JUnit4。这些测试根据批处理文件频繁(每天或每周)运行,以确保产品正常工作,不会出现回归或其他问题 我想枚举源文件或类文件,并生成表示项目中测试用例的类和方法的列表。我可以比较此列表以确定批处理文件未运行哪些测试 有没有什么简单的方法可以做到这一点,比如JUnit中的功能?或者JUnit中是否有我可以通过编程驱动的功能,例如扫描一个充满类文件的目录并找出哪些是测试。我意识到我

我正在处理一个有50000个源文件的大型项目,大约5000个测试分布在2000个类中。这些主要是JUnit3,还有少量JUnit4。这些测试根据批处理文件频繁(每天或每周)运行,以确保产品正常工作,不会出现回归或其他问题

我想枚举源文件或类文件,并生成表示项目中测试用例的类和方法的列表。我可以比较此列表以确定批处理文件未运行哪些测试

有没有什么简单的方法可以做到这一点,比如JUnit中的功能?或者JUnit中是否有我可以通过编程驱动的功能,例如扫描一个充满类文件的目录并找出哪些是测试。我意识到我可以编写代码来单独加载每个类,并开始检查它的某些特性,但如果存在某些特性,我希望能够使用它

问题的第二部分,是否有任何常用的方法来注释测试?如果我可以对测试进行注释,我可能会对它们进行过滤,并动态生成批处理文件,根据过滤条件运行它们。e、 g.运行所有需要网络连接的测试,运行所有使用子系统a的测试,以此类推


有什么能帮我做这件事吗?我意识到我可以使用逗号分隔的值列表或其他东西来滚动我自己的注释,但也许这类事情已经正式化,并且有一些工具可以使用它。

测试是扩展
测试用例的类(在JUnit3的情况下)或注释为
@Test
(在JUnit4的情况下)。因此,使用IDE或编程都不是问题:编写一个程序,将所有
*class
文件递归地查找到classes文件夹中,并测试类是否扩展
TestCase
或是否用
@Test
注释

另一个问题可能会帮助您解决第二个问题:您是否正在寻找某种代码覆盖工具,听起来您可能也在寻找构建系统:-)运行“某些”测试的批处理文件听起来有点恶心!我不是在寻找代码覆盖率,我是在寻找测试覆盖率。人们编写测试,将它们添加到bat文件中运行,计划的作业将在特殊的机器上运行它们。问题是,随着时间的推移,测试会被注释掉,或者实现了一半,或者被破坏和删除,或者有人忘记添加一个测试,我需要看看我们总共有多少个测试,以及有多少测试实际运行。任何未运行的文件都必须被考虑,以确定其未运行的原因。本练习的一部分是删除批处理文件。如果我知道所有的测试,并在第2部分中对它们进行了注释,那么理论上我可以动态生成批处理文件(或ant或任何东西),并且不会有bat文件需要维护。我知道我可以这样做,但有些测试不会直接扩展TestCase。他们可能会扩展一些其他类,这些类扩展了一些其他类,这些类扩展了TestCase。他们可能生活在不同的包中,这些包的顺序与我扫描文件夹的顺序不同。考虑到可能会有很多这样的边缘,如果已经有代码能够很好地做到这一点,那么可以节省我很多时间。