Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @如果仅通过测试,则testng中的AfterClass/Suite_Java_Testng - Fatal编程技术网

Java @如果仅通过测试,则testng中的AfterClass/Suite

Java @如果仅通过测试,则testng中的AfterClass/Suite,java,testng,Java,Testng,我使用testng@AfterClass注释在外部系统中进行一些清理。但当测试失败时,我真的需要这些数据。如果只通过了测试,我可以让testng执行一些操作吗?好的,afterclass/aftersuite级别没有任何内容。您可以做以下几件事: AfterMethod将ITestResult作为参数,该参数提供当前执行测试的结果。基于此,您可以进行清理 或 ISuiteListener为您提供了一个带有testresult对象的onFinish方法,您可以迭代该方法,然后执行清理 有一个选项可

我使用testng@AfterClass注释在外部系统中进行一些清理。但当测试失败时,我真的需要这些数据。如果只通过了测试,我可以让testng执行一些操作吗?

好的,afterclass/aftersuite级别没有任何内容。您可以做以下几件事:

  • AfterMethod将ITestResult作为参数,该参数提供当前执行测试的结果。基于此,您可以进行清理
  • ISuiteListener为您提供了一个带有testresult对象的onFinish方法,您可以迭代该方法,然后执行清理

  • 有一个选项可以获取当前时刻之前所有失败测试的信息。您必须将ITestContext注入到“afterClass”方法中


    迭代所有结果并按TestClass进行筛选,例如,如果只有测试通过,则可以仅删除当前测试类的测试数据:

    @AfterClass
    public void deleteCreatedData(ITestContext context) {
        if (hasClassFailedTests(context)) return;
        //do your cleanup for current test class
    }
    
    protected boolean hasClassFailedTests(ITestContext context) {
        Class clazz = this.getClass();
        return context.getFailedTests().getAllMethods().stream().anyMatch(it -> 
       it.getRealClass().equals(clazz));
    }
    

    你能告诉我真正的问题是什么吗?奇怪的是,你总是想删除导致测试失败的数据。不,恰恰相反。如果测试数据通过,我想删除它。更好。所以你应该调整标题和描述:他们说的是相反的是,谢谢你指出。根据文件,它可能是一个(未确认)。
    @AfterClass
    public void deleteCreatedData(ITestContext context) {
        if (hasClassFailedTests(context)) return;
        //do your cleanup for current test class
    }
    
    protected boolean hasClassFailedTests(ITestContext context) {
        Class clazz = this.getClass();
        return context.getFailedTests().getAllMethods().stream().anyMatch(it -> 
       it.getRealClass().equals(clazz));
    }