Аннотации адаптера Java - PullRequest
       7

Аннотации адаптера Java

5 голосов
/ 04 октября 2011

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

1 Ответ

3 голосов
/ 04 октября 2011

Посмотрите на метааннотации Spring. Мне кажется, что это концепция, которую вы ищете: http://blog.springsource.com/2009/05/06/spring-framework-30-m3-released/.

Возможно, вы сможете применить ту же концепцию к вашему собственному приложению.

...