2016-09-22 4 views
0

Я пытался узнать, что после этого @Test (метод тестирования), @AfterClass был вызван. Таким образом, чтобы знать, что я написал следующий код, чтобы сделать это:Как передать метод ITestNG в методе @AfterClass в качестве параметра?

@AfterClass(alwaysRun = true) 
    public synchronized void tearDownClass(final ITestNGMethod itx) { 

    final Method m = itx.getConstructorOrMethod().getMethod(); 

    System.out.println(m.getName()); 

} 

Но TestNG бросает следующее сообщение об ошибке: Метод tearDownClass требует 1 параметров, но 0 поставлялись в @Configuration аннотацию.

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

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

ответ

0

Не может работать, потому что ITestNGMethod представляет собой метод, и класс может иметь много методов.

Вместо этого вы можете ввести ITestContext и искать в нем свои методы.

+0

Так что если я использую ITestContext, он дает все «методы @Test». Но не нашел никакого метода, который мог бы предоставить такие подробности, как после этого метод @Test, текущий метод '@AfterClass' был выполнен. Пожалуйста, дайте мне знать, если мой вопрос не ясен, чтобы я мог предоставить пример кода для объяснения. –

+0

Если я хорошо понимаю, вам нужен последний выполненный метод класса? – juherr

2

Это не имеет смысла: это метод @AfterClass, который вызывается после того, как все методы тестирования класса запущены. Ваш конкретный сценарий (желающий узнать последний вызванный метод) очень специфичен, поэтому вы должны реализовать его самостоятельно.

Например, вы можете создать поле lastMethod и каждый из них установить его с его именем, чтобы при достижении @AfterClass вы знаете, какой из них был последним.

+0

Реализован как указано, и он работал как шарм. Спасибо @Cedric. –

+0

Ты меня достал! Это именно то, что я предложу! – juherr

Смежные вопросы