2013-12-13 4 views
0

Я хочу проверить некоторые внешние файлы журналов после каждого теста, если во время выполнения были ошибки. Выбрасывание исключения в AfterMethod не работает, потому что TestNG по-разному обрабатывается по-разному: он просто откажется от метода конфигурации, а не предыдущего теста.Как я могу пропустить тест в TestNG в методе AfterMethod?

Мой подход был бы так:

@AfterMethod(alwaysRun = true) 
protected void tearDown(ITestResult result) { 
    if (thereWasAProblemDuringTestExecution()) { 
     result.setStatus(ITestResult.FAILURE); 
     result.setThrowable(getSomeThrowableSomebodyStoredAnywhere()); 
    } 

    // doing other cleanUp-tasks 
} 

Но все-таки, мой Eclipse, TestNG плагин говорит тест пройден.

Возможно ли (и как) выполнить тест (а не только метод конфигурации) в методе конфигурации?

ответ

2

Попробуйте setCurrentTestResult() метод из класса org.testng.Reporter:

result.setStatus(ITestResult.FAILURE); 
Reporter.setCurrentTestResult(result); 
1

Это может быть слишком поздно, но я могу помочь кому-то, кто ищет для этого.

Вы можете сделать это с помощью ITestContext

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

def testContext = Reporter.currentTestResult.testContext 
testContext.passedTests.addResult(result,Reporter.currentTestResult.method) 
testContext.passedTests.getAllMethods().remove(Reporter.currentTestResult.method) 
result.setStatus(ITestResult.FAILURE) 
testContext.failedTests.addResult(result,Reporter.currentTestResult.method) 

Я использую Groovy.

+0

Возможно ли предоставить вам такой же код в java? Благодаря! – OverrockSTAR

+0

Я попытался выполнить следующие действия в java - я хотел бы сделать это, если бы TCs потерпели неудачу (я повторю еще два раза), а затем маркируйте их как SKIP для первых двух FAILED CASE, а последний также не удалось сообщить об этом как FAILED. Код: 'ITestContext tc = Reporter.getCurrentTestResult(). GetTestContext(); \t \t \t tc.getFailedTests(). GetAllMethods(). Remove (Reporter.getCurrentTestResult(). GetMethod()); \t \t \t result.setStatus (ITestResult.SKIP); \t \t \t tc.getSkippedTests(). AddResult (result, Reporter.getCurrentTestResult(). GetMethod()); 'проверка pls – OverrockSTAR

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