Für die Verwendung der Spring-Frameworks stellt checkerberry db
mit dem SpringCheckerberryDbEnvironmentCreator
eine
Klasse bereit, die die Integration von checkerberry
vereinfacht.
Beispiel 2.80. Spring-Integration
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/application-context-test.xml"}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, TestMethodNameResolvingExecutionListener.class, ApplicationContextResolvingExecutionListener.class }) public abstract class AbstractJUnit4CachingTestCase { private CheckerberryDbEnvironment environment; @Before public void setUp() { environment = SpringCheckerberryDbEnvironmentCreator.createEnvironment(); environment.setUp(this); } @After public void tearDown() { environment.tearDown(); environment = null; } }
Das obige Beispiel zeigt die Integration von checkerberry db
unter Verwendung von JUnit4 und Spring (siehe „Aufrufen der setUp-Methode unter JUnit4 und Spring“). Neben den zuvor
beschriebenen TestExecutionListenern
,
DependencyInjectionTestExecutionListener
und
TestMethodNameResolvingExecutionListener
wird ein
weiterer TestExecutionListener
verwendet. Der
ApplicationContextResolvingExecutionListener
ermittelt den aktuellen Spring-Application-Context und speichert
diesen innerhalb des checkerberry test centers in der Klasse
ApplicationContextResolver
. Über die statische
Methode getTestApplicationContext
steht der
Application-Kontext dann zur Verfügung.
In der setUp
-Methode wird checkerberry
db-Umgebung über die Klasse
SpringCheckerberryDbEnvironmentCreator
erzeugt. Der
Creator stellt folgende Methoden zur Erstellung der checkerberry
db-Umgebung zur Verfügung.
Beispiel 2.81. SpringCheckerberryDbEnvironmentCreator
/** * Erzeugt ein neues Default-Environment über einen {@link BridgeContainer}. * Der BridgeContainer wird über den Namen "bridgeContainer" aus dem * Application-Kontext von Spring gelesen. * * @return erzeugtes Environment. */ public static CheckerberryDbEnvironment createEnvironment() {...} /** * Erzeugt ein neues Default-Environment über einen {@link BridgeContainer}. * Der BridgeContainer wird über den angegebenen Namen aus dem * Application-Kontext von Spring gelesen. * * @param bridgeContainerBeanName * Bean-Name des Containers im Application-Kontext. * @return erzeugtes Environment. */ public static CheckerberryDbEnvironment createEnvironment( String bridgeContainerBeanName) {...} /** * Erzeugt ein neues Environment über einen {@link BridgeContainer}. Der * BridgeContainer wird über den angegebenen Namen aus dem * Application-Kontext von Spring gelesen. * * @param environmentId * Name der Environment-Id. * @param bridgeContainerBeanName * Bean-Name des Containers im Application-Kontext. * @return erzeugtes Environment. */ public static CheckerberryDbEnvironment createEnvironment( CheckerberryDbEnvironmentId environmentId, String bridgeContainerBeanName) {...} /** * Erzeugt ein neues Default-Environment mit dem Standard {@link * de.conceptpeople.checkerberry.db.bridge.resource.ClasspathResourceLoader} * . Der {@link DatabaseConnector} wird über den Namen "databaseConnector" * aus dem Application-Kontext von Spring gelesen. * * @param databaseDescriptionCallback * zu verwendendes Callback zur Definition der * Datenbankbeschreibung. * @param configurationCallback * zu verwendendes Callback für die Konfiguration. * @return erzeugtes Environment. */ public static CheckerberryDbEnvironment createEnvironment( DatabaseDescriptionCallback databaseDescriptionCallback, DbConfigurationCallback configurationCallback) {...}
Der SpringCheckerberryDbEnvironmentCreator
greift über die Klasse ApplicationContextResolver
auf den Application-Kontext von Spring zu und erzeugt anhand einiger
Konventionen checkerberry db-Umgebung. Wenn man die Bridge-Komponenten
in einen
de.conceptpeople.checkerberry.db.bridge.BridgeContainer
zusammenfasst und diesen im Application-Kontext unter den Bean-Namen
„bridgeContainer
“ registriert, benötigt der
SpringCheckerberryDbEnvironmentCreator
keine
weiteren Parameter für die Erzeugung von checkerberry db. Der Aufruf
von createEnvironment()
ohne Parameter ist dann
ausreichend.