2017-02-16 10 views
1

Wie spritzt man eine Spring Bean in die statische Klasse?Wie Spring Bean in statische KlasseRule injizieren?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {ConfigClass.class}) 
public class SimpleTest { 

@ClassRule 
public static SimpleClassRule simpleClassRule = new SimpleClassRule(); 

} 
+0

Könnten Sie 'org.springframework.test.context.junit4.rules.SpringClassRule' in' SimpleClassRule' erweitern? – vegaasen

Antwort

0

Es ist möglich, wenn Sie SpringJUnit4ClassRunner.class erweitern und withBeforeClasses außer Kraft setzen, withBefores Methoden:

public class CustomRunner extends SpringJUnit4ClassRunner { 
    @Override 
    protected Statement withBeforeClasses(Statement statement) { 
     List<TestRule> testRules = classRules(); 
     // spring method to inject into existing object like injector.injectMembers(...); 
     return super.withBeforeClasses(statement); 
    } 
} 

wichtig: Diese Lösung gilt nicht für RuleChains.

auch fand ich heraus, die folgende Lösung in Frühling JIRA: https://jira.spring.io/browse/SPR-10252

Aktuell kann es durch die Erweiterung DependencyInjectionTestExecutionListener (DITEL) mit zusätzlicher Logik erreicht wird , die für @Rule und @ClassRule Felder sieht und autowires sie die gleiche Weg als Testinstanz ist autowired.

Verwandte Themen