Создание собственной аннотации для расширения поведения JUnit4 - PullRequest
0 голосов
/ 04 августа 2011

Я искал ресурсы о том, как расширить JUnit4 моими собственными аннотациями.

Я хотел бы иметь возможность определить @ExpectedProblem, с помощью которого я мог бы пометить некоторые из моих тестов.Я видел, что в сети, похоже, есть какой-то материал о том, как расширить TestNG, но я не смог бы улучшить ни один, чтобы расширить JUnit4.

Кто-нибудь здесь продлевал JUnit4 в прошлом?

Спасибо

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

В зависимости от того, что вы хотите, чтобы ваша аннотация @ExpectedProblem делала, другой вариант - создать @Rule.

Для этого требуется JUnit 4.7+, но это должно быть проще, чем реализация собственного Runner.

Например, если вы хотите, чтобы аннотация гласила: «этот тест должен вызывать исключение», тогда вам нужно взглянуть на правило @ExpectedException. Даже если этого недостаточно для ваших нужд, это может послужить хорошей отправной точкой для реализации вашего собственного правила.

1 голос
/ 04 августа 2011

Основной подход заключается в создании собственного бегуна класса. Например, путем расширения классов org.junit.runners.ParentRunner или org.junit.runners.BlockJUnit4ClassRunner. Затем вы должны аннотировать свой тестовый класс с помощью @RunWith(<your class runner>.class). Затем вы можете проанализировать тестовый класс в своем бегунке, чтобы проверить аннотации, предпринять соответствующие действия и т. Д.

Вот как Spring смоделировал поддержку JUnit, используя org.springframework.test.context.junit4.SpringJUnit4ClassRunner

...