2014-02-10 14 views
5

Ich muss eine Methode @BeforeClass in Junit tun, aber Werte mit Spring injizieren, so kann private Variablen nicht zu wechseln. Ich versuche, diese Listener zu machen und eine Listener-Klasse zu erstellen, aber ich stoße auf ein Problem damit.Verwenden von Autowired in einer TestExecutionListener-Klasse für BeforeClass junit

Ich habe Werte, die ich Autowire in dieser Klasse müssen auch weil die Methode, die ich BeforeClass Anrufe für eine Variable ausgeführt werden soll, die @Autowired injiziert wird. Aus irgendeinem Grund funktioniert es jedoch nicht und dieser Wert bleibt null. Ist jemand schon mal auf ein solches Problem gestoßen?

+0

http://saltnlight5.blogspot.com/2012/09/enhancing-spring-test-framework-with.html http: // www. tikalk.com/java/how-create-after-class-methods-junit-4-using-spring-3-framework –

Antwort

12

Es ist nicht das sauberste, aber es funktioniert:

public class MyTestListener extends AbstractTestExecutionListener { 

    @Value("${my.value}") 
    private String myValue; 
    @Autowired 
    private MyBean myBean; 

    @Override 
    public void beforeTestClass(TestContext testContext) throws Exception { 
     testContext.getApplicationContext() 
       .getAutowireCapableBeanFactory() 
       .autowireBean(this); 
    } 
} 
+0

Instant upvote dafür! – namero999

+1

Hat nicht für mich funktioniert, aber das tat: http://Stackoverflow.com/a/15704700/939543 –

Verwandte Themen