Java Adapter Annotations

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

5
задан IAmYourFaja 4 October 2011 в 11:32
поделиться