Frage

Ich habe ein Unit-Test-problem, wenn eine Klasse eine statische variable, die will load die Spring-Anwendung Ctx.

Diese Klasse kommt NICHT aus der Bohne Fabrik, und ich kann an dieser Tatsache etwas ändern.

static ApplicationContext applicationContext = ...;

Dies funktioniert gut, ist aber schwer zu JMock, oder atleast ich weiß nicht, einen Weg und bis ich kann den Frühling Ctx will start up.Nicht ideal für einen unit-test-situation.

Gibt es eine Arbeit um, der kennt das jemand?Ich habe die option zum ändern der statischen Variablen zu etwas, was ich möchte..

Vielen Dank.

War es hilfreich?

Lösung

Gelöst ist diese selbst.

War es wirklich einfach, in die Ende.Möchte Notwendigkeit zu wrap my statisch in eine Klasse, die konnte ich dann zu spotten.

public class ApplicationContextHolder implements ApplicationContextHoldable {

    protected static ApplicationContext applicationContext = ...;

    @Override
    public ApplicationContext getApplicationContext() {
        return ApplicationContextHolder.applicationContext;
    }

}

Andere Tipps

Schön.Die Ironie ist, dass die eine Sache, dass der Frühling gut ist die Verwaltung von Singletons, so sollte es keine Notwendigkeit für statische Variablen :)

Sie können reflektion verwenden, basierend JMock-APIs private / statische Felder

    import static mockit.Deencapsulation.setField;
    //Test method
    public void testSample {
        setField(Sample.class,"isPrivate",true);
        setField(Sample.class,"isStatic",true);
    }

    private class Sample {
        private boolean isPrivate = false;
        private boolean isStatic = false;

    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top