AfterSuite在testng中被跳过了

时间:2018-03-14 15:56:03

标签: selenium-webdriver

AfterSuite无法正常工作。我有2个测试用例扩展了基础测试。 当before方法的第一个测试用例跳过时,aftersuite没有被执行。 Aftersuite也在跳过。 这是错误还是预期的行为? 我的要求是我想在所有测试用例执行后运行一些语句。 以下是测试用例的代码。

基础测试

package suiteone;

import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;

public class BaseTest  {

    @BeforeSuite
    public void BeforeSuite() throws Exception{

        System.out.println("before suite");
    }

    @AfterSuite
    public void AfterSuite() throws Exception{

        System.out.println("After suite");
    }

}

第一个测试用例

package suiteone;

import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class FirstTestCase extends BaseTest{

    @BeforeMethod
    public void beforeMethod() {    
        System.out.println("before method of "+this.getClass().getName());
        throw new SkipException("Skipping the test case "); 

    }


    @Test
    public void FirstTestCase() {

        System.out.println("I am in test case "+this.getClass().getName());


    }

    @AfterMethod
    public void afterMethod() { 
        System.out.println("after method of "+this.getClass().getName());
    }

}

第二个测试用例

package suiteone;

import java.io.IOException;
import org.testng.ITestResult;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class SecondTestCase extends BaseTest{

    @BeforeMethod
    public void beforeMethod()  {   
        System.out.println("before method of "+this.getClass().getName());

    }


    @Test
    public void SecondTestCase() {

        System.out.println("I am in test case "+this.getClass().getName());


    }

    @AfterMethod
    public void afterMethod()   {   
        System.out.println("after method of "+this.getClass().getName());
    }

}

Testng xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite one">

  <test name="test">
      <classes>
      <class name="suiteone.FirstTestCase"/>
      <class name="suiteone.SecondTestCase"/>
      </classes>   
  </test> <!-- Test -->
</suite> <!-- Suite -->

当我在打印套件方法之前执行testng.xml文件时,而不是在套件之后执行。

我的查询是,这是错误还是预期的行为。如何使aftersuite也打印出来。 以下是控制台中显示的输出。 (我使用的是testng 6.12,webdriver 3.5.3)

[RemoteTestNG] detected TestNG version 6.12.0
before suite
before method of suiteone.FirstTestCase
before method of suiteone.SecondTestCase
I am in test case suiteone.SecondTestCase
after method of suiteone.SecondTestCase

===============================================
Suite one
Total tests run: 2, Failures: 0, Skips: 1
Configuration Failures: 0, Skips: 3
===============================================

1 个答案:

答案 0 :(得分:1)

在任何情况下都不能将您的@AfterSuite更正为@AfterSuite(alwaysRun=true) 在这种情况下,即使发生故障,您@AfterSuite也会被处决。