TestNG не обновляет базу данных с помощью Spring Hibernate - PullRequest
1 голос
/ 23 июля 2011

Я использую TestNG в своем приложении, имеющем фреймворк GWT, Spring и Hibernate.В моем классе TestNG я пытаюсь создать объект класса DaoImpl, который используется для выполнения операции добавления / обновления / удаления в базе данных, используя hibernate (я использую hibenratetemplate здесь для транзакции), и мой код работает нормально для операции добавления / обновления / удаленияпри запуске приложения.

Но когда я запускаю свой класс testng, я могу получить объект bean-объекта DaoImpl и могу читать данные из базы данных, но при попытке выполнить операцию обновления / удаления в базе данных,Метод testng, успешно выполненный, база данных остается неизменной, значит, нет изменений в БД.

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

Мой код класса TestNg приведен ниже

Public class RoleMgmtDAOImplTest extends AbstractTransactionalTestNGSpringContextTests {
RoleMgmtDAOImpl roleMgmtDAOImpl;
     @BeforeClass
        public void setup() {
          Assert.assertNotNull(applicationContext);
          roleMgmtDAOImpl=(RoleMgmtDAOImpl) applicationContext.getBean("roleDAO");
          Assert.assertNotNull(roleMgmtDAOImpl);
     }
}

Ответы [ 2 ]

1 голос
/ 09 мая 2012

Дело в том, что, как подсказал Корин, аннотация @Rollback. Если он не используется, изменения базы данных на самом деле не вносятся в вашу базу данных.

1 голос
/ 23 июля 2011

Я думаю, вам нужно правильно настроить транзакции, посмотрите на эту ссылку:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#testcontext-tx

Таким образом, вам, вероятно, понадобятся следующие аннотации для вашего класса:

@ ContextConfiguration (...) // контекст должен включать менеджер транзакций
@TransactionConfiguration (...) // имя диспетчера транзакций, если не по умолчанию
@ Транзакционный

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

Обычно вы не хотите, чтобы ваши тестовые данные сохранялись. Если вы это сделаете, вы можете изменить поведение отката по умолчанию в аннотации @TransactionConfiguration на уровне класса или с аннотацией @Rollback на уровне теста, см .:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#integration-testing-annotations

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...