Java 获取外部程序中的所有@test(TestNg)方法

Java 获取外部程序中的所有@test(TestNg)方法,java,reflection,testng,Java,Reflection,Testng,我有一个UI(桌面应用程序),它显示项目/存储库中扩展名为“.java”的所有文件,以便用户可以选择这些文件(所选类添加到testng xml)并运行它们(桌面应用程序运行testng xml) 我的要求很简单,我希望在项目/存储库中搜索带有@test注释的所有方法,而不是使用文件扩展名搜索 这可以通过testng或java反射实现吗?请建议 欢迎提出任何其他建议/方法。查看我的开源库: private-AtomicReference-extractJavaTestsCode( 原子参考jav

我有一个UI(桌面应用程序),它显示项目/存储库中扩展名为“.java”的所有文件,以便用户可以选择这些文件(所选类添加到testng xml)并运行它们(桌面应用程序运行testng xml)

我的要求很简单,我希望在项目/存储库中搜索带有@test注释的所有方法,而不是使用文件扩展名搜索

这可以通过testng或java反射实现吗?请建议


欢迎提出任何其他建议/方法。

查看我的开源库:

private-AtomicReference-extractJavaTestsCode(
原子参考javaTestsCode,IInvokedMethod IInvokedMethod){
//搜索java测试类的文件。
try(Stream path=Files.walk(path.get(
System.getProperty(“user.dir”)+getTestsPath(iInvokedMethod))){
paths.filter(Files::isRegularFile)
//对于每个java测试文件,输入其字符串。
.forEach(文件->{
字符串javaTestFileCode=readLinesFromFile(file.toString());
javaTestsCode.set(
join(“\n”,javaTestsCode.get(),javaTestFileCode));
});
}捕获(异常){
//什么也不做。
}
返回javaTestsCode;
}
它在给定路径中显示禁用的测试方法,并对正则表达式解析代码进行轻微修改,它应该完全按照您所描述的那样执行

private AtomicReference<String> extractJavaTestsCode(
            AtomicReference<String> javaTestsCode, IInvokedMethod iInvokedMethod) {

            // Search for files of java tests classes.
            try (Stream<Path> paths = Files.walk(Paths.get(
                    System.getProperty("user.dir") + getTestsPath(iInvokedMethod)))) {
                paths.filter(Files::isRegularFile)

                        // For each java test file, concat its string.
                        .forEach(file -> {
                            String javaTestFileCode = readLinesFromFile(file.toString());
                            javaTestsCode.set(
                                    String.join("\n", javaTestsCode.get(), javaTestFileCode));
                        });
            } catch (Exception exception) {
                // Do nothing.
            }
        return javaTestsCode;
    }