Как эффективно проверить кислотность транзакций (Java / Spring / EJB или другие) - PullRequest
2 голосов
/ 11 мая 2011

Просто удивительно. В некоторых приложениях атомарность и последовательность действительно очень важны, так что я думаю, что это должно быть проверено ...

Поскольку я разработчик Java, я расскажу о том, что знаю. Использование управления транзакциями Spring или EJB3 с аннотациями.

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

Мне просто интересно, есть ли простые способы проверить управление транзакциями нашего приложения. Например, представьте, что вы работаете в PayPal. Вы хотите быть уверены, что клиент PayPal зачислен на счет, а клиент снят с его банковского счета. Исключение не должно позволять кредитовать счет PayPal без взимания с клиента каких-либо платежей.

  • Существуют ли инструменты для проверки таких вещей?
  • Вы уже сделали такую ​​вещь?
  • Или как бы вы сделали?

Полагаю, это можно было бы сделать "домашним", используя немного АОП и разработав методы, чтобы было проще тестировать ...

Ответы [ 2 ]

1 голос
/ 10 августа 2012

Возможно внедрить исключения в тестах с помощью инструментов байт-кода, таких как Byteman: http://java.dzone.com/articles/fault-injection-unit-tests

После того, как вы подняли исключение, вы можете проверить, было ли состояние БД изменено непоследовательно или откатано ...

0 голосов
/ 11 мая 2011

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

Нет ничего проще, чем драйвер XA для двухфазной фиксации между несколькими базами данных, о которых я знаю. Вам нужно что-то вроде JCA с менеджером транзакций, чтобы наблюдать за ними.

...