kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Robert Munteanu
Robert Munteanu
Вопрос

Тестирование аспекта Spring AOP

При написании аспектов, как я могу проверить, что они соответствуют друг другу и что они вызываются, когда я этого хочу?

Я использую декларации @Aspect в Spring 2.5.6.


Меня не волнует функциональность, которая'извлекается и тестируется иначе.

12 2009-08-09T12:49:37+00:00 2
 cb4
cb4
Редактировал вопрос 11-го ноября 2016 в 10:08
Программирование
java
spring
spring-aop
Rich Seller
Rich Seller
9-го августа 2009 в 1:04
2009-08-09T13:04:19+00:00
Дополнительно
Источник
Редактировать
#9351892

Здесь нужно проверить три разных вещи:

  1. Соответствуют ли ваши указатели тому, что вы ожидаете?
  2. Ссылается ли ваш совет на правильный указатель?
  3. Выполняется ли совет так, как вы ожидаете?

Чтобы проверить указатели, вы можете определить несколько тестовых типов, которые имеют те же сигнатуры пакетов/типов/методов, что и предполагаемые "реальные" цели, затем определить тестовый совет против указателей, чтобы убедиться, что они совпадают (также определите несколько типов, которые не должны совпадать, чтобы убедиться, что указатели не слишком либеральны). Обычно я делаю это, определяя совет для выполнения обратного вызова метода в тестовой цели, устанавливая флаг, а затем утверждая, что флаг был установлен.

Проверить совет сложнее. Я обычно делегирую все тело совета обычному методу, а затем сосредотачиваюсь на тестировании метода, а не совета.

Если вы сделали это, то единственная недостающая часть - это то, что ваш совет применяется к правильным точкам и действительно вызывает методы. Если вы обеспокоены тем, что это может быть проблемой, вы можете сделать это, создав другой аспект, который соответствует выполнению вашего совета и устанавливает флаг, чтобы показать, что ожидаемый делегированный метод был вызван аспектом, и переопределить метод, чтобы он ничего не делал.

8
0
Решение / Ответ
Robert Munteanu
Robert Munteanu
17-го октября 2009 в 9:05
2009-10-17T21:05:48+00:00
Дополнительно
Источник
Редактировать
#9351893

В итоге я создал нечто, что является своего рода интеграционным тестом, следующим образом:

Создал JUnit-тест с поддержкой Spring

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "aspects-test.xml" })
public class SomeAspectTest {

}

Создана конфигурация Spring для этого теста, которая:

  • включает использование @AspectJ;

  • конфигурирует мой аспект с фиктивными зависимостями

  • объявляет боб, который должен быть подхвачен аспектом

      <aop:aspectj-autoproxy />
      <bean class="SomeAspect">
          <property name="userDetailsSource">
                  <bean class="StubUserDetailsSource"/>
          </property>
      </bean>
      <bean class="DummyService"/>

В модульном тесте я получаю фиктивный сервис и вызываю его методы

@Autowired
private DummyService _dummyService;

@Test(expected = ApplicationSecurityException.class)
public void adminOnlyFails() throws ApplicationSecurityException {

    _dummyService.adminOnly();
}
7
0
Похожие сообщества 14
pro.jvm
pro.jvm
5 814 пользователей
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Открыть telegram
learn.java
learn.java
5 375 пользователей
Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat
Открыть telegram
Java & Co
Java & Co
4 434 пользователей
Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/179171 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude
Открыть telegram
pro.JVM Jobs Chat
pro.JVM Jobs Chat
2 564 пользователей
Чат для обсуждения вакансий на JVM языках. Правила: - Никакого спама - Никакого троллинга и оскорблений участников - Размещение вакансий только через канал Канал для вакансий: @jvmjobs Основной чат: @jvmchat Наши друзья: @scala_jobs, @scala_jobs_feed
Открыть telegram
Java/Kotlin and more
Java/Kotlin and more
2 063 пользователей
чат о Java/Kotlin и связанных технологиях. We're discussing: job, tech questions etc. languages: russian, java, eng, kotlin Ссылка на чат: t.me/springframeworkio
Открыть telegram
Java Underground
Java Underground
1 751 пользователей
Библиотека по Java https://t.me/javalib Наше сообщество ВК: https://vk.com/javatutorial Вакансии и резюме свои строго в этот канал: https://t.me/job_java
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией