Я использую 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 () или активированное приложение открыто,
Заранее спасибо