我必须创建一个具有自动装配元素的类的实例,以进行测试。
public class MyClass extends SomeOtherClass {
@Autowired
public MyClass(OtherClass1 one, OtherClass2 two){
super(one, two)
}
}
我怎样才能在代码中创建这个类的实例,并将参数连接到spring?
答案 0 :(得分:0)
如果您使用SpringJUnit4ClassRunner读取Spring语境中的内容以供测试使用,则可以使您的测试具有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 Context配置。
答案 1 :(得分:-1)
您可以将它们作为属性自动装配,而不是将其他元素作为构造函数参数传递。然后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
然后,您可以在其他类中使用它
public class ClassThatUsesMyClass {
@Autowire
private MyClass myClass;
}