Zum Testen meiner Anwendungen verwende ich gerne FitNesse und zum Schreiben meiner Anwendungen verwende ich häufig Spring. Da es in FitNesse keine Möglichkeit gibt, den Mechanismus für die Instanziierung der Fixtures außer Kraft zu setzen, müssen Sie den Spring-Kontext irgendwie laden und die Beans, die Sie testen möchten, aus dem Spring-Kontext abrufen. Sie können dies natürlich auch von Hand tun und die Beans aus dem Anwendungskontext abrufen, aber das macht Ihren Fixture-Code etwas unübersichtlich. Besser ist es, Spring die Verdrahtung zu überlassen.
Um Spring Ihre Fixtures verdrahten zu lassen, können wir die von der AutowireCapableBeanFactory angebotenen Funktionen nutzen. Wenn wir einen
public class FixtureWirer {
private static AutowireCapableBeanFactory beanFactory;
statisch {
beanFactory = new ClassPathXmlApplicationContext("/applicationContext.xml").getAutowireCapableBeanFactory();
}
public static void wire(Fixture fixture) {
// Stellen Sie sicher, dass Sie AUTOWIRE_BY_NAME verwenden, sonst wird Spring sich beschweren
// über die Injektion der Eigenschaft systemUnderTest in der Oberklasse, die vom Typ Objekt ist.
beanFactory.autowireBeanProperties(fixture, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
}
}
Code in einem Fixture: (in diesem Fall ein SetupFixture).
public class ApplicationSetup extends SetUpFixture {
private SomeRepository someRepository;
@Override
protected void setUp() throws Exception {
FixtureWirer.wire(this);
}
public void setSomeRepository(SomeRepository someRepository) {
this.someRepository = someRepository;
}
// Rest des Einrichtungscodes, in dem Sie someRepository verwenden können, weggelassen...
}
Viel Spaß beim Testen.
Verfasst von
Lars Vonk
Contact



