Как выполнить мягкое утверждение в TestNG - PullRequest
1 голос
/ 28 апреля 2020

Ниже приведен пример метода подтверждения в среде TestNG.

private static void failAssertNoEqual(String defaultMessage, String message) {
    if (message != null) {
      fail(message);
    } else {
      fail(defaultMessage);
    }
  }

А вот и метод сбоя.

/**
   * Fails a test with the given message.
   * @param message the assertion error message
   */
  public static void fail(String message) {
    throw new AssertionError(message);
  }

Таким образом, при сбое подтверждения происходит сбой теста с ошибкой подтверждения.

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

Я пытался поместить каждое утверждение в блок Try Catch, но это делает код очень длинным.

   try {
            Assert.assertEquals("active", "inactive");
        }
        catch (AssertionError e) {
            //Store this somewhere
        }

В противном случае мне придется писать пользовательские функции, выполнять каждое утверждение, сохранять их в коллекции и, наконец, проходить или не сдавать тест на основе значений. Но тогда я на самом деле не использую TestNG.

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

1 Ответ

1 голос
/ 28 апреля 2020

Вы можете использовать SoftAssert

public class ExampleTest {

 private SoftAssert softAssert = new SoftAssert();

 @Test
 public void test() {
     softAssert.assertTrue(false);
     softAssert.assertTrue(false);
     // your assertions
     softAssert.assertAll();
 }

    @Test(expectedExceptions = IOException.class, expectedExceptionsMessageRegExp = ".* Message .*")
    public void exceptionTest() throws Exception {
        throw new IOException("IO Test");
    }

    @Test(expectedExceptions = { IOException.class, NullPointerException.class }, expectedExceptionsMessageRegExp = ".* Message .*")
    public void exceptionsTest() throws Exception {
        throw new IOException("IO Test");
    }


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