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

时间:2018-07-15 19:30:50

标签: java reflection testng

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

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

这可以通过testng或Java Reflection实现吗?请提出建议。

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

1 个答案:

答案 0 :(得分:0)

看看我的开源库: https://github.com/AutomatedOwl/testng-disabled-tests

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;
    }

它在给定的路径中显示了禁用的测试方法,对正则表达式的解析代码进行了少许修改,它应该可以完全按照您的描述进行操作。