Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
¿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.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

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.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda