@Venuhaha
Учусь программировать на Python

Как сделать Expected Exeption в Unit тесте положительным результатом?

Написан юнит тест, который передает бизнес сервису определенные параметры, при которых сервис выдает предупреждение (ошибку). Эта ошибка является положительным результатом и она передается в результат теста,делая результат TestNG для некорректным . У TestNG есть вот такое решение @Test(expectedExceptions = КлассОшибки.class), но у сервиса который тестируется есть только один класс, соответственно если мы применим это- то не узнаем о той ошибке, которая на самом деле была не пололожительной. Пока есть решение- где мы мы передаем дополнительный параметр, что это тест и в таком случае он заходит в функцию, но не падает в Exeption, но такое решение мне не нравится. Сразу скажу: мы не можем сделать чтобы это был не Exeption. Может как-то можно выбрать правильный Exeption по каким-то параметрам....
Очень интересны ваши решения, извините если криво объяснил)
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@bedward70
santaatnas в комментариях правильно написал: "что вам мешает выполнить этот кусок кода в try блоке, и в catch блоке поймать необходимый exception и сделать assertEquals по имени класса объекта?"

От себя добавлю, что есть замечательный метод
fail();
Его используйте для участков кода, которые не должны выполниться в тесте.

Ниже пример для тестирования гарантированного эксепшена:
import org.junit.Test;

import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.fail;

public class ExampleTest {

    private void exceptionMethod() throws Exception {
        throw new RuntimeException("test");
    }

    @Test
    public void test() {
        try {
            exceptionMethod();
            fail("Impossible");
        } catch (Exception e) {
            assertEquals("Checks class", RuntimeException.class, e.getClass());
            assertEquals("Checks message", "test", e.getMessage());
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы