TestNG установить статус теста - PullRequest
0 голосов
/ 09 октября 2018

У меня есть специальное решение для создания отчетов и утверждений, которое работает именно так, как я этого хочу, однако gradle не помечает тесты как неудачные.Самое простое решение для меня - просто пометить тест как неудачный в testNG всякий раз, когда мои утверждения разрешены, поэтому он пометит его как неудачный в gradle.Я установил статус теста, используя это:

Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);

Но он возвращается после завершения метода @Test

@Test
public void assertionsFail(){
  //Custom assertion fails
  generalAssertion(new AssertionPayload(false));
  //Let testNG know that test failed
  Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);
  //Marked as failed here, Reporter.getCurrentTestResult() returns 2
}

@AfterMethod(alwaysRun = true)
public void afterTest(ITestResult testResult) {
  //Why is it marked as passed here? Reporter.getCurrentTestResult() returns 1

}

В конце метода теста я подтвердил, что статуснастроен на провал.Однако, когда он достигает моего @AfterTest, по какой-то причине он больше не устанавливается на сбой, а устанавливается на проход.Есть ли что-то простое, что мне здесь не хватает?Есть ли простой способ пометить тест как проваленный?Я пытался создать softAssert, который не удался, но это действительно неопрятно и не идеально.

1 Ответ

0 голосов
/ 11 октября 2018

Я немного покопался в коде testNG и узнал, что setStatus вызывается несколько раз после завершения теста.testNG, кажется, читает, если есть какие-либо бросаемые объекты, а затем устанавливает статус соответствующим образом.Я смог получить желаемое поведение, выполнив следующее:

        Throwable throwable = new Throwable("One or more tests in this group has failed");
        throwable.setStackTrace(new StackTraceElement[0]);
        Reporter.getCurrentTestResult().setThrowable(throwable);

Я также удалил трассировку стека, поскольку она просто указывает на то, где сделаны мои утверждения, и не помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...