Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EntityManager/UserTransaction -> Rollback ohne funktion

Empfohlene Antworten

Veröffentlicht

Moin,

meine Unittests führen vor den Tests ein transaction.begin() und danach ein transaction.rollback() aus.

Beides hab ich per injection in der Testklasse.

@PersistenceContext()

private EntityManager entityManager;

@Resource

private UserTransaction userTransaction;

Entity Manager wird nicht mehr benutzt. Ich führ das nur der vollsätndigkeithalber mit auf. Es wurden darüber mal testdaten persistiert. (Da hat das rollback korrekt drauf funktioniert)

Nun rufe ich Businesslogik auf, welche Objekte persistiert (entityManager.persist()).

Die Businesslogik nutzt für den EntityManager keine injection.

Beim debuggen seh ich allerdings, dass die transaction in der Testklasse, wie auch in der Businesslogik im entityManager definitiv die selbe ist. (stimmt nicht ganz, der transactionmanager ist der selbe, die transaction seh ich im entitymanager leider nicht)

Habt ihr ne idee warum ein Rollback an dieser Stelle nicht funktionieren könnte?

Schöne Grüße,

Uschi

Bearbeitet von DonUschi

weitere infos und erkenntnisse des tages:

Die UnitTests testen die Businesslogik über einen Aufruf der Webservicemethoden die auf die Businesslogik Zugriff haben.

Im UnitTest hab ich eine UserTransaction und wollte auf diese begin und rollback machen. Das hat ja aber wahrscheinlich überhaupt keinen Einfluss auf die Transactions und EntityManager im Backend. (Diese sind nämlich für jede Aktion im Backend und auch im Frontend jedesmal andere)

Ist es überhaupt möglich von der Sicht des UnitTests aus die Transaction des Backends zu steuern? Schichtverletzungen wären dabei erstmal egal.

Da das ganze Container Managed ist, hab ich ja auch leider keinen Zugriff auf die EntityTransaction die dann evtl. global wäre?

Bearbeitet von DonUschi

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.