如何访问Reporter从ITestListener使用的测试输出目录

时间:2016-05-27 17:24:06

标签: java testng

我们正在使用IReporter的generateReport()方法来创建自定义报告。在运行开始时,我们需要删除报告文件(如果存在)。

我们需要这样做的原因是因为我们在ITestListener的onStart()方法中使用SkipException - 如果引发某些异常,我们需要失败/停止测试运​​行。如果发生这种情况,则永远不会调用generateReport(),而是保留现有的自定义报告,这通常会造成混淆。

如何从ITestListener访问generateReport()中使用的相同outputDirectory?我可以获得ITestContext的outputDirectory,但这会将我引导到Reporter的outputDirectory的子文件夹。

public class CustomTestListener implements ITestListener {

    @Override
    public void onStart(ITestContext ctx) {

        // This returns a child directory of the actual directory we want
        // String outputDir = ctx.getOutputDirectory();

        // This is null, how would i access from ITestContext?
        // XMLReporter x = new XMLReporter();
        // String outputDir = x.getOutputDirectory();

        // method that would delete the file
        String reportFile = outputDir + "/" + GlobalConstants.REPORT_FILE;
        deleteFile (reportFile);
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,这对我有用:

String outputDir = ctx.getOutputDirectory() + "/../"