В попытке разработать компоненты, которые можно использовать как можно чаще, я недавно задумался о возможности так называемых "адаптерных аннотаций". Под этим я подразумеваю применение классического адаптера
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. В основном я спрашиваю, можно ли обернуть аннотации сторонних разработчиков для повторного использования/разделения проблем/etc. Заранее спасибо!