Я хотел создать пользовательскую аннотацию JUnit, что-то похожее на ожидаемый тег в @Test, но я хочу также проверить сообщение аннотации.
Любые намеки, как это сделать, или, может быть, есть что-то готовое?
Чтобы сделать JUnit4 пикап ваших пользовательских аннотаций, вам нужно написать свою собственную реализацию Runner, а затем передать ее в аннотацию RunWith в классе Test.
Вы можете начать, взглянув на BlockJUnit4ClassRunner, который является исполнителем бежит по умолчанию для JUnit 4 (если мне хорошо помогает память).
Предполагая, что вы захотите подобрать пользовательскую аннотацию с именем @MyTest с пользовательским бегуном MyRunner, ваш тестовый класс будет выглядеть примерно так:
@RunWith(MyRunner.class)
class Tests {
...
@MyTest
public void assumeBehaviour() {
...
}
}
Ответ «Reid Mac» неплохо справляется с описанием того, как реализована пользовательская аннотация.
JUnit 4.9 упростил использование библиотекой «правил» для тестов, которые, как я думаю, могут работать, а также пользовательская аннотация. Взгляните на TestRule в качестве стартового точка. Вы можете реализовать правило, основанное на этом интерфейсе, а затем использовать либо аннотации @ClassRule или (method-level) @Rule, чтобы включить их в свои тесты.
Хорошим конкретным примером является ExpectedException , который позволяет указать исключения, такие как ожидаемый параметр для @Test (а затем некоторые).
Вы можете создать собственный TestRule , как указано в первом ответе или вы можете использовать/продлить TestWatcher , которые уже имеют метод обработки начала/окончания теста.
Существует метод apply (база Statement, описание описания)
, где описание на самом деле является оберткой вокруг вашего тестового метода. Описание имеет отличный метод getAnnotation (annotationClass ) , который позволит вам делать то, что вы хотите, указав пользовательскую аннотацию, которую хотите обработать