Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
¿Cómo puedo usar transacciones en TestNG @BeforeClass?

Yo uso TestNG + Spring + hibernación. Cuando uso la transacción en @BeforeClass, obtengo:

 org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread

Ejemplo de código:

 @Transactional(transactionManager = "transactionManager") @Rollback @ContextConfiguration(locations = "/WEB-INF/testing/applicationTestContext.xml") @TestExecutionListeners(listeners = { ServletTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class, TransactionalTestExecutionListener.class, SqlScriptsTestExecutionListener.class, WithSecurityContextTestExecutionListener.class }) public abstract class ExampleOfTest extends AbstractTestNGSpringContextTests{ @Autowired private SessionFactory sessionFactory; @BeforeClass public void setUpClass() { sessionFactory.getCurrentSession().beginTransaction(); // get HibernateException sessionFactory.getCurrentSession().getTransaction().commit(); } .... }

¿Cómo puedo usar la transacción en @BeforeClass? Quiero usar esto para la entrada de datos de una sola vez utilizada en todas las pruebas de clase.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

El problema sería que @EnableTransactionManagement debería estar en su contexto de primavera

o

Prueba algo como

 // BMT idiom with getCurrentSession() try { UserTransaction tx = (UserTransaction)new InitialContext() .lookup("java:comp/UserTransaction"); tx.begin(); // Do some work on Session bound to transaction sessionFactory.getCurrentSession().persist(...); tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; // or display error message }

getCurrentSession es como restringido, debería ejecutarse en una transacción activa.

Creo que esto puede ayudar.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!