Чтобы разработать компоненты, которые можно использовать как можно больше, я недавно подумал о возможности так называемых «аннотаций адаптера». Под этим я подразумеваю применение классического шаблона Adapter
OO к аннотациям Java. Так, например, допустим, у меня есть пакет модульного тестирования, полностью основанный на JUnit. Мне нужно аннотировать все мои методы испытаний следующим образом:
public class WidgetTest
{
@Test
public void test_WidgetConstructor()
{
// ...
}
}
Но что, если после создания набора тестов, скажем, с 1000 классов тестирования, я решу, что хочу начать модульное тестирование с какой-то новой супер крутой среды тестирования, которая требует аннотирования всех методов тестирования следующим образом:
public class WidgetTest
{
@SuperCoolUnitTest(someParam="true")
public void test_WidgetConstructor()
{
// ...
}
}
Теперь, в этом конкретном примере может быть вполне осуществимым для поиска-замены старых аннотаций для новых, но в практическом приложении это не будет возможным решением.
Так что было бы возможно для меня "обернуть" мои аннотации модульного теста чем-то доморощенным, как:
public class WidgetTest
{
@HomegrownUnitTestAnnotation
public void test_WidgetConstructor()
{
// ...
}
}
А затем создайте свой собственный процессор аннотаций, который будет преобразовывать экземпляры @HomegrownUnitTestAnnotation
в те аннотации, которые мне нужны в данный момент (либо @Test
, либо @SuperCoolUnitTest(someParam="true")
)?
Очевидно, этот вопрос относится ко всем аннотациям, а не только к тем, которые предоставляются JUnit. Я в основном спрашиваю, можно ли обернуть сторонние аннотации для повторного использования / разделения проблем / и т.д. Заранее спасибо!