我必須創建一個具有自動佈線元素的類的實例以供測試。使用自動電線創建呼叫的實例
public class MyClass extends SomeOtherClass {
@Autowired
public MyClass(OtherClass1 one, OtherClass2 two){
super(one, two)
}
}
我該如何在代碼中創建此類的實例,使用參數雖然在春天連線?
我必須創建一個具有自動佈線元素的類的實例以供測試。使用自動電線創建呼叫的實例
public class MyClass extends SomeOtherClass {
@Autowired
public MyClass(OtherClass1 one, OtherClass2 two){
super(one, two)
}
}
我該如何在代碼中創建此類的實例,使用參數雖然在春天連線?
而不是將其他元素作爲構造函數參數傳遞,而是將其作爲屬性自動裝入。 Spring會注入對象。
public class MyClass extends SomeOtherClass {
@Autowired
private OtherClass1 one;
@Autowired
private OtherClass2 two
public MyClass(){
super(one, two)
}
}
編輯:基於http://www.mkyong.com/spring/spring-auto-wiring-beans-with-autowired-annotation/,增加@Autowired到構造也是有效的。
如果您想自動填充MyClass,則必須使用@Component或類似的@Service註釋對其進行註釋。
@Component
public class MyClass extends SomeOtherClass
然後,如果您使用SpringJUnit4ClassRunner在Spring上下文來讀取測試中使用,你可以用它在其他類
public class ClassThatUsesMyClass {
@Autowire
private MyClass myClass;
}
您的測試可以由Spring的。例如:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"the-config.xml"})
public final class MyClassTests {
@Autowired
private MyClass testee;
@Test
public void testSomething() {
assertThat(testee).doesSomethingExpected();
}
}
請注意,您應該重用盡可能多的生產配置成爲可能,而不是建立一個平行的Spring上下文配置,反映它。
對不起,我應該說我不能改變類 – Androme
這應該是可能的,通過在application-context.xml中定義bean。不幸的是,我沒有太多的經驗,但http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html應該給你一個體面的參考如何開始。具體來說,查看屬性註釋的「ref」字段。 –