从Java中的源代码上下文获取JUnit测试类列表

从Java中的源代码上下文获取JUnit测试类列表,java,reflection,junit,Java,Reflection,Junit,为了生成一些测试文档,我想获得项目中JUnit测试类的列表。假设,我们有以下项目结构 project/ src/ Main.java test/ XTest.java YTest.java Main.java文件应该能够读取所有测试类(即XTest和YTest),以便提取所有测试方法。 像Package.getPackage()这样的常见疑点似乎不适用于测试类,而只适用于实际的源代码 我如何才能做到这一点?让Main访问类XTest和YTest,这些类在执行时需

为了生成一些测试文档,我想获得项目中JUnit测试类的列表。假设,我们有以下项目结构

project/
  src/
    Main.java
  test/
    XTest.java
    YTest.java
Main.java文件应该能够读取所有测试类(即XTest和YTest),以便提取所有测试方法。 像
Package.getPackage()
这样的常见疑点似乎不适用于测试类,而只适用于实际的源代码


我如何才能做到这一点?

让Main访问类XTest和YTest,这些类在执行时需要位于其类路径上

假设编译后目录结构如下:

project/
  src/
    Main.java
  test/
    XTest.java
    YTest.java
  target/
    classes/
      Main.class
    test-classes/
      XTest.class
      YTest.class
main
main
方法可以这样执行

java -classpath target/classes/:target/test-classes/ Main
在这一点上,它可以反射地访问测试类


不过,将Main插入/test并明确告诉您的测试执行者将其作为测试执行的一部分运行可能会更容易些

您是否考虑过解析surefire(或任何测试执行者)报告?@beresfordt我们已经这样做了,以保持测试结果。此外,我们还希望记录实际的测试代码,这些代码已经通过自定义注释进行了扩展和记录。现在的目标是从测试方法中提取这些注释,并将它们导出到Confluence。因此,确实有必要使用反射读取测试类,然后您需要以这样一种方式调用Main,即测试类位于其类路径上。将添加包含详细信息的答案