2015-07-08 1 views
0

Я пишу тесты, используя testNG в этом случае, и я хочу написать свой собственный метод assert, который использует некоторое отражение, чтобы утверждать, что что-то истинно. Я намерен использовать метод во всех других вспомогательных методах.Как разрешить метод helper-метода генерировать исключение, не перехватывая его в методах вызова?

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

Однако я бы предпочел не добавлять метод бросков к каждому из моих тестовых классов. Тем более, что могут быть причины другие методы бросают то же исключение, что я хочу, чтобы затмение напоминало мне, чтобы проверить. Есть ли способ, с помощью которого я могу сам определить структуру тестирования, что созданное конкретное исключение должно пропустить тест со стеком, как если бы я бросил его через весь стек?

Я мог бы использовать org.testing.Assert.fail, но это позволяет мне предоставить строку вместо полной трассировки стека. Я мог бы обернуть проверенное исключение в RuntimeException, но я чувствую, что он (немного) усложняет для тестировщиков понять, что на самом деле произошло. Есть ли более прямой способ сказать «не удалось из-за этого исключения»?

ответ

0

Использовать java.lang.AssertionError для отказа от испытания; вот что fail() использует внутренне. Вы можете расширить эту ошибку, чтобы добавить настраиваемые данные, которые вам нужны.

Я также не думаю, что throws Exception является анти-шаблоном в модульных тестах. Существует много кода, который (по тем или иным причинам) выдает проверенные исключения. Он не добавляет много информации к тесту, когда вы заявляете, какие именно исключения он может бросить (в отличие от обычных методов).