Test mit Hibernate und Spring

jpm

Mitglied
Hallo,

ich versuche gerade eine Testklasse für meine Hibernate Anwendung zu schreiben. Als Framework setze ich auf Spring und Hibernate. Als IDE nutze ich Netbeans.

Zuerstmal die Testklasse:

Java:
package mrepo.reporting;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;

@ContextConfiguration(locations = {"/WEB-INF/dispatcher-servlet.xml", "/WEB-INF/applicationContext.xml"})
public class report_test {
    @Autowired
    private reportDAO dao;

    public void setAdresseDao(reportDAO dao) {
        this.dao = dao;
    }

    @Test
    public void TestHibernate() {
        report testreport = new report();
        testreport.setStrReportname("Testcaste");
        testreport.setIntParamPriority(2);

        System.out.println(testreport.getStrReportname());
        System.out.println(testreport.getIntParamPriority());

        System.out.println("Show DAOs Informations");
        System.out.println(this.dao.hashCode());
        System.out.println(this.dao.getClass());

        System.out.println("Try to save now");
        // dao.getTicketcount();
        // dao.saveRecord(report);
    }
}

Als fehler bekomme ich eine java.lang.NullPointerException für Zeile 34. Also wird nach meinem Verständnis dao nicht automatisch instanziert.

Wie kann ich herausfinden ob er den Context überhaupt sauber anspricht? Wie kann ich sicherstellen das er an den "richtigen" Orten sucht? Sollte man für die Testunits immer eine weitere xml anlegen und spezifisch füllen? Wo würde man diese ablegen?

Danke schonmal im Vorraus!

applicationContext.xml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans-3.0.xsd[/url]
       [url=http://www.springframework.org/schema/aop]Index of /schema/aop[/url] [url]http://www.springframework.org/schema/aop/spring-aop-3.0.xsd[/url]
       [url=http://www.springframework.org/schema/tx]Index of /schema/tx[/url] http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
    <context:annotation-config />
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>net.sourceforge.jtds.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:jtds:sqlserver://servername</value>
        </property>
        <property name="username">
            <value>username</value>
        </property>
        <property name="password">
            <value>password</value>
        </property>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="mappingResources">
            <list>
                <value>/WEB-INF/report.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>
    
    <bean id="reportDAO" class="mrepo.reporting.reportDAOHibernate">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>
    
</beans>
 
M

maki

Gast
Hi,

verstehe an deinem "Test" ein paar Dinge nicht.

Sysouts/Logging in Tests kannst du vergessen, braucht kein Mensch.
Asserts dagegen müssen in einem Test vorhanden sein, sonst ist es kein Test (in isolierten unittests können mocks asserts einsparen, aber du hast ja einen Integrationstest).

Warum dein DAO Test das Spring dispatcher Servlet bauchst bleibt wohl dein Geheimnis ;)
Wie du ein DAO mit einem Integrationstest testen wilslt ohne Testdaten in die DB einzuspielen ist auch merkwürdig (DBUnit kann das zB.).
setAdresseDao ist überflüssig??

Nehme mal an du fängst gerade erstb damit an und wilst dich zuerst orientieren.

Wenn du nciht alle Beans in einer applicationContext.xml definierst, musst du u.U. für einem Integrationstest gar nicht extra XML Dateien schreiben, für isolierte unittests brauchst du gar kein Spring und Hibernate.

Könntest asserten in @Before dass das DAO gesetzt wurde, dann weisst du zumindest ob Spring hochgefahren ist.

Zeile 34 zeigst du gar nicht ;)
 

jpm

Mitglied
Danke erstmal für deine Mühe! Ich fange definitiv gerade erst an und versuche halt das lesen und schreiben mit Hibernate in einer Testanwendung durchzuführen. Nach meinem Verständnis benötige ich hierfür auch das Framework, aber damit kann ich falsch liegen. Die Datenbank ist auch in einer Testumgebung, ergo kann ich da auch einfach was reinschreiben, bzw möchte das sogar.

Zeile 34 ist wohl Zeile 26 geworden. Also der Moment wo er das erste mal das DAO aufruft.

Könntest asserten in @Before dass das DAO gesetzt wurde, dann weisst du zumindest ob Spring hochgefahren ist.
Das ist mir leider noch nicht ganz klar, warum und wie führe ich das durch?

Warum dein DAO Test das Spring dispatcher Servlet bauchst bleibt wohl dein Geheimnis
Öhm.... ja.. weil.. *click* ist weg :)
 
M

maki

Gast
Ich fange definitiv gerade erst an und versuche halt das lesen und schreiben mit Hibernate in einer Testanwendung durchzuführen.
Tipp: Versuche etwas einfacheres.
Spring, hibernate und dein RDBMS in einem Integrationstest zu testen ist nix für den Einstieg, nur zum abgewöhnenm, oder schlimmer um sich schlechte Dinge anzugewöhnen.
Ohne DBUnit oder eine andere Möglcihekit Testdaten (TestFixture) einzuspielen kannst du keine echten Tests für sowas schreiben.

Nach meinem Verständnis benötige ich hierfür auch das Framework, aber damit kann ich falsch liegen.
Welches Framework denn?
Nutzt ja mehrere ;)
Wie gesagt, für einen Integrationstests von Hibernate, Spring und dem RDBMS brauchst du eben Hibernate, Spring und das RDBMS.

Die Datenbank ist auch in einer Testumgebung, ergo kann ich da auch einfach was reinschreiben, bzw möchte das sogar.
Es gibt kein "du" bzw. "ich" bei einem automatisierten Test, es gibt nur den Test.
Der Test muss seine Testdaten einspielen bzw. von welchen ausgehen und auch die Ergebnisse übersprüfen, alles andere ist kein automatisierter Test.

Das ist mir leider noch nicht ganz klar, warum und wie führe ich das durch?
assertNotNull sagt dir nix??
Wie gesagt, fange erstmal klein an, verstehe was die 4 Phasen bei einem autom. Test machen, verstehe den Unterschied zwischen Integrationstests und isolierten Unittests, verstehe wozu man Mockobjekte nutzt, ist schon schwierig genug am Anfang.

Mit scheint als ob du nicht genau weisst was du da testest...

Sehe gerade dass du nichtmal die Java Namenskonvention einhälst... vielleciht eher bei den Grundlagen anfangen?
 

jpm

Mitglied
Vermutlich hast du recht. Ich dachte halt es wäre eine einfache Möglichkeit den Code zu testen, aber dann versuche ich erstmal die Application sauber zum laufen zu bekommen.

Danke aber für deine Zeit.
 
M

maki

Gast
Was du da testen willst ist aber gar nicht so einfach ;)

Solltest dich wie gesagt mehr mit testen an sich auseinandersetzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
8u3631984 Beim WebMVC Test wird Resource File nicht gefunden. Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Repository wird null im Test Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Wie schreibt man Test für einen Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 5
D SpringBootTest H2 Database für Test Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Validations-Test mit @Size Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Test Properties aus application.yml Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
8u3631984 Bestpractice : Test JPA Repositories Frameworks - Spring, Play, Blade, Vaadin & Co 9
8u3631984 Autowired App im Test später starten Frameworks - Spring, Play, Blade, Vaadin & Co 0
8u3631984 Spring JPA Test in Gradle Sub Module Frameworks - Spring, Play, Blade, Vaadin & Co 1
T JUnit parametrisierter Test Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Test findet Component nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
F Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 14
S Integrations Test in Java mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
P Transaktionaler Spring Test ohne von AbstractTransactionalJUnit4SpringContextTests zu erben Frameworks - Spring, Play, Blade, Vaadin & Co 4
H Laden der Hibernate Cfg in .jar Frameworks - Spring, Play, Blade, Vaadin & Co 5
ExceptionOfExpectation Persistierung in Hibernate(SpringBoot) Frameworks - Spring, Play, Blade, Vaadin & Co 2
padde479 org.hibernate.query.sqm.UnknownEntityException Frameworks - Spring, Play, Blade, Vaadin & Co 12
OnDemand Jasypt Hibernate 6 alternative gesucht Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
D org.hibernate.LazyInitializationException Frameworks - Spring, Play, Blade, Vaadin & Co 2
krgewb Hibernate - deleteByXXX Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z Postgres, Hibernate Seqencenummer wird wiederholt und verursacht PK-Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z JPA, Hibernate, Postgres und Sequence-Nummern Frameworks - Spring, Play, Blade, Vaadin & Co 3
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Hibernate Lazy Collection löschen Frameworks - Spring, Play, Blade, Vaadin & Co 7
H Hibernate Sql Abfrage loggen Spring mit log4j.properties Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
S Spring JPA / Hibernate: save Methode arbeitet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Data: Hibernate liest nicht alle Ebenen Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Data Hibernate mehrfache Suchkriterien Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot, Hibernate und OAuth2 wie komme ich an den User? Frameworks - Spring, Play, Blade, Vaadin & Co 13
D Spring Hibernate Struts2 ? Frameworks - Spring, Play, Blade, Vaadin & Co 1
F JPA org.hibernate.LazyInitializationException / Spring @Transactional Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Spring, Hibernate und JPA in einem Projekt Frameworks - Spring, Play, Blade, Vaadin & Co 4
I Nachladen mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
N MAVEN + Spring + JPA + Hibernate + JUnit4 Frameworks - Spring, Play, Blade, Vaadin & Co 5
E Tomcat mit Hibernate und Spring - Problem mit Connection Pool Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Context initialization failed - mit Spring, JPA, Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 1
B Buchempfehlung für Groovy, Spring, Hibernate, SOAP, J2EE gesucht Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Hibernate - Spring Roo Frameworks - Spring, Play, Blade, Vaadin & Co 0
Dit_ Springsource Toolsuit | Hibernate intergration Frameworks - Spring, Play, Blade, Vaadin & Co 1
D [InvalidDataAccessApiUsageException] Spring Data JPA / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 1
B SpringMVC-EntityManagerFactory-Hibernate-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 0
R Projektübergreifende Entities mit Tomcat (Spring/JPA/Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 2
N Wie manage ich unter Spring mehrere Datenbankverbindung mit Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 6
Y Sessionmanagement (ThreadLocal) in Hibernate via Spring möglich? Frameworks - Spring, Play, Blade, Vaadin & Co 2
C Aufgabe in OSGI/Hibernate/Spring-DM Frameworks - Spring, Play, Blade, Vaadin & Co 4
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring / Jpa / Hibernate -> java.lang.IllegalArgumentException: Unknown entity Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Hibernate und JDBC über Spring Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben