DonUschi Geschrieben 7. April 2010 Geschrieben 7. April 2010 (bearbeitet) 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 7. April 2010 von DonUschi Zitieren
DonUschi Geschrieben 7. April 2010 Autor Geschrieben 7. April 2010 (bearbeitet) 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 7. April 2010 von DonUschi Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.