2016-04-05 6 views
0

Ich habe ein Programm, das Oracle verwenden. Ich möchte einen Test über die Abfrage durchführen, die erledigt sind. Db-Test ist HSQLDB.Verwenden Sie eine andere Datenbank für den Test

public class UserDAODataAccess { 
    private Connection connection; 

    private void getConnection() throws MMException { 
     connection = AutoExternalServices.getDatabase().newConnection(); 
    } 


    List<User> getUser(){ 
     getConnection(); 
     ... 
    } 
} 

Im Test ist es möglich, die aktuelle getConnection zu umgehen und eine Verbindung für eine andere db zu erhalten?

+0

Machen Sie reine JDBC in Ihrer Anwendung? Oder verwenden Sie ein Persistenz-Framework? Wenn ja, welcher? –

+0

wir verwenden reines jdbc –

+0

Was ist der Code von AutoExternalServices.getDatabase() dann? –

Antwort

0

Probleme beim Ersetzen der Connection von Ihrer AutoExternalServices mit einer Testverbindung, sollte Ihre Alarmglocken läuten. Normalerweise kommen solche Schwierigkeiten von einem schlechten/suboptimalen Design.

In Ihrem Fall, wenn Sie können, würde ich vorschlagen, dass Sie die Connection als Konstruktor Argument und entfernen Sie die getConnection() Methode. Dies würde es leicht machen, die Connection für Ihre Tests zu tauschen.

Was die getConnection() Umgehung gibt alle Arten ist ‚Hacks‘, dies zu tun, ein Schalter auf einer Systemeigenschaft einschließlich, wobei das Verfahren in einer speziellen Test Klasse überschreiben, ...

Aber ich würde nicht empfehle eines von ihnen ...

Verwandte Themen