-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: ClassCastExcetion nach Select in TestNG
PostPosted: Mon Aug 25, 2008 5:55 am 
Newbie

Joined: Mon Aug 25, 2008 5:04 am
Posts: 1
Location: Deutschland / Cottbus
Hibernate version:
3.2.4.sp1

Name and version of the database:
postgres8.4

Hallo,

beim Testen mit TestNG 5.7 im Zusammenspiel mit Hibernate v3.2.4 bin ich auf ein Problem gestossen. Irgendwie scheint die durch TestNG gestartet Testumgebung (embedded JBoss) sich beim Auflösen von Polymorhiebeziehungen anders zu verhalten, als bei einem seperaten JBoss-Server (4.2.2.GA). Das Problem ist das Auftreten einer ClassCastException beim Select in der Testumgebung, obwohl ein Test auf dem Develop-System keine Exception wirft.

Hier die Klassenstruktur

Code:
@Entity
@Table(name="tarifdatenbasis", schema="tarifedaten")
public  class Tarifdaten extends DBBasis{


     @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
                        optional = false)
     @JoinColumn(name="buchhaltung",nullable = false)
     protected Buchhaltung buchhaltung;

.
.
.
}

@Entity
@Table(name="phv_tarifdaten",  schema="tarifedaten")
public class PHVTarifdaten extends Tarifdaten {
}
     //member buchhaltung wird geerbt
}

@Entity
@Table(name="Buchhaltung", schema="buchhaltungen")
@Inheritance(strategy=InheritanceType.JOINED)
public class Buchhaltung extends DBBasis{
   .
   .
   .
}

@Entity
@Table(name ="phv_buchhaltung", schema="buchhaltungen")
public class PHVBuchhaltung extends Buchhaltung {
.
.
.
}



Hier die Testmehtoden:
Hinweis: die saveHRVTarifdaten-Testmethode wird ohne Fehler ausgeführt
die generate-Methode garantiert, dass nur Buchhaltungs-Objekte vom Typ THVBuchhaltung intern erzeugt werden - die Zeile
Code:
HRVBuchhaltung buch = hrvtarifdaten.getBuchhaltung()
liefert ja auch kein Fehler.

im Testklassen-Member this.objid_tarifdatenHRV1 wird die HRVTarifdaten-ID abgelegt.

Code:
@Test(groups="entitysavetest")
public void saveHRVTarifdaten() throws Exception {   
   Tarif tarif = tarifmng.generateTarif("HRV");
   assertNotNull(tarif);
   HRVTarifdaten hrvtarifdaten =tarifmng.generateHRVTarifdaten(tarif);
   assertNotNull(hrvtarifdaten);
      
   HRVBuchhaltung buch = hrvtarifdaten.getBuchhaltung();
        assertEquals(true,
                this.tarifmng.saveOrUpdate(hrvtarifdaten).booleanValue());
   assertEquals(obj, hrvtarifdaten.toString());
   objid_tarifdatenHRV1 = hrvtarifdaten.getObjID();      
}

@Test(groups="DATest", dependsOnGroups="entitysavetest", dependsOnMethods="saveHRVTarifdaten")
public void findHRVTarifdaten() throws Exception {   
   HRVTarifdaten hrvtarifdaten=
                (HRVTarifdaten)tarifmng.find(this.objid_tarifdatenHRV1);
   assertNotNull(hrvtarifdaten);
      
   HRVBuchhaltung buch = hrvtarifdaten.getBuchhaltung();
   assertNotNull(buch);
      
}



Das Speichert funktionierte tadellos - die Daten in der DB sind alle Korrekt vorhanden und in den reichtigen Spalten wiederzufinden.

Nach der Ausführung des Tests bekommen ich folgende Fehlermeldung:
[testng] PASSED: savedoubleTarifdatenTest
[testng] FAILED: findHRVTarifdaten
[testng] java.lang.ClassCastException: org.sis.assek.orm.entity.buchhaltung.Buchhaltung_$$_javassist_38
[testng] at org.sis.assek.orm.entity.tarifedaten.HRVTarifdaten.getBuchhaltung(HRVTarifdaten.java:274)
[testng] at org.sis.assek.ngtests.TestTarifdatenmanager.findHRVTarifdaten(TestTarifdatenmanager.java:243)

So wie ich das sehe kann in der Testumgebung Hibernate nicht mehr den richtigen Typ (HRVBuchhaltungs) beim Select/Find wiederherstellen. Im Developsystem (seperater JBoss + Hibernate 3.2.4.sp1) wird der richtige Buchhaltungstyp wieder hergestellt.

Waran kann dieses Unterschiedliche Verhalten liegen? Ich finde es nicht gerade beruhigent, wenn sich das Testsystem anderes verhält - das macht die Test auch irgendwie sinnlos.

Gruß Hendrik


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.