Как вызвать экземпляры входных аргументов метода TestNg @Test после выполнения теста с использованием интерфейса TestNg ITestResult или любого другого интерфейса testNg - PullRequest
0 голосов
/ 25 марта 2019

Я создаю собственный репортер, реализующий интерфейс IReporter, и хотел бы опубликовать входные параметры теста в итоговом отчете о тестировании.Мои тестовые входные параметры предоставляются через TestNg Dataprovider.Каждый входной параметр является экземпляром класса TestCase.

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

Мне удалось распечатать все входные аргументы, используя следующий код

Set<ITestResult> failedTests = testContext
                    .getFailedTests()
                    .getAllResults();
            for (ITestResult result: failedTests) {
                for (Object param: result.getParameters()) {
                    System.out.println(param);
                }
            }
Output:
data.service.entities.TestCase@1a1da881
org.testng.TestRunner@4dbb42b7

Метод getParameters () возвращает массив объектов, которые я не знаю, какприведение к TestCase.

Пожалуйста, посоветуйте способ получить экземпляр data.service.entities.TestCase@1a1da881 для вызова его методов.

1 Ответ

0 голосов
/ 29 марта 2019

Чтобы получить экземпляры, я создал класс TestNg CustomListener, в котором я вручную установил входной аргумент (TestCase) в качестве атрибута каждого выполненного теста ITestResult:

    public class CustomListener extends TestListenerAdapter {

    @Override
    public void onTestFailure(ITestResult iTestResult) {
        super.onTestFailure(iTestResult);
        TestCase tCase = (TestCase) iTestResult.getParameters()[0];
        iTestResult.setAttribute("failed_case", tCase);
    }

    @Override
    public void onTestSuccess(ITestResult iTestResult) {
        super.onTestSuccess(iTestResult);
        TestCase tCase = (TestCase) iTestResult.getParameters()[0];
        iTestResult.setAttribute("passed_case", tCase);
    }

    @Override
    public void onTestSkipped(ITestResult iTestResult) {
        super.onTestSkipped(iTestResult);
        TestCase tCase = (TestCase) iTestResult.getParameters()[0];
        iTestResult.setAttribute("skipped_case", tCase);
    }
  }

В своем классе пользовательских отчетов я получаю объекты каждого теста, как показано ниже:

        TestCase failedCase = (TestCase) testResult.getAttribute("failed_case");
        TestCase passedCase = (TestCase) testResult.getAttribute("passed_case");
        TestCase skippedCase = (TestCase) testResult.getAttribute("skipped_case");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...