Получить имя метода неудачного теста в Cucumber / TestNG - PullRequest
0 голосов
/ 12 апреля 2020

Я использую cucumber с testng и extereport-cucumber4-adapter. Если тест не пройден, он делает снимок экрана и сообщает в JIRA

Теперь единственное, что мне нужно, - это имя метода, который не прошел тест, поэтому я могу поместите это как резюме в билет Jira. Теперь я вижу эти имена методов в отчетах об экстентах, каждый из которых ДАЕТ И, КОГДА, ТО, ТО В отчете, я просто не могу вставить имя ошибочного в строку, поэтому могу отправить его в JIRA

Было бы неплохо иметь способ сделать это без фактического вмешательства в методы, которые запускаются из-за большого рефакторинга.

То, что я пробовал с @BeforeMethod, @AfterMethod, @BeforeStep, @AfterStep , попробовал это в ITestListener, попробовал это с IInvokedMethod, попробовал это в классе крюков, попробовал это класс stepDefinition, попробовал это в классе бегуна, попробовал это в базовом классе. Пожалуйста, помогите, я схожу с ума, единственное, что я получаю, это null

Вот фрагмент кода

Базовый класс:

public class Base{

public Appium driver d;

}

Класс крючков:

@Before
public void startAPP(){

//Here goes code for starting driver with capabilities

}

@After
public void tearDown(){
d.closeApp();
d.quit();
}

Слушатель:

public class NGTestListener extends ExtentReportUtil implements ITestListener {


    private static ExtentReports extent;

    @Override
    public void onTestStart(ITestResult result) {
        System.out.println("STARTING TEST");
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        System.out.println("PASS");
    }

    @Override
    public void onTestFailure(ITestResult result) {
        System.out.println("FAIL");
        }

    @Override
    public void onTestSkipped(ITestResult result) {
        System.out.println("SKIP");
    }

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        System.out.println("on test sucess within percentage");
    }

    @Override
    public void onStart(ITestContext context) {
        System.out.println("Test started");
    }

    @Override
    public void onFinish(ITestContext context) {
        System.out.println("TEST FINISHED");
    }

Класс бегуна:

@RunWith(Cucumber.class)
@CucumberOptions(
        features="src/test/resources/features",
        glue={"stepDefinitions","testSetup"},
        tags={"@FeatureTag"},
        monochrome = true,
        strict = true,
        dryRun = false,
        plugin= {
                "pretty",
                "html:reports/test-output",
                "json:reports/json_output/cucumber_report.json",
                "junit:reports/junit_xml/junit_report.xml"
        }

        )
@Test
public class SmokeTest extends AbstractTestNGCucumberTests {

      @BeforeTest
        public AppiumDriverLocalService startServer()  {

                     start Appium server code

        @AfterTest
        public void stopServer() {
                     stop Appium server code
        }
}

Пример шагов:

public class TestStep extends Base{

    @Given("^Activated App is open$")
    public void activated_app_is_open()  {
            preLogin
                .landingPage();
    }

    @And("^User selects language$")
    public void user_selects_language() {

            preLogin
                .selectEnglish()
                .clickSave()
                .landingPage();

    }
}

Если что-то нужно для получения дополнительной информации, пожалуйста, скажите, чтобы я мог редактировать это. И еще раз, я ищу способ получить имя метода, не мешая шагам.

Мне нужно активировать_app_is_open () или активированное приложение открыто,

Заранее спасибо

...