如果我有一个带有@PostConstruct方法的类,如何使用JUnit和Spring测试其构造函数,从而测试其@PostConstruct方法?我不能简单地使用new ClassName(param,param),因为那样就不使用Spring了,@ PostConstruct方法不会被触发。
我在这里错过明显的东西吗?
public class Connection {
private String x1;
private String x2;
public Connection(String x1, String x2) {
this.x1 = x1;
this.x2 = x2;
}
@PostConstruct
public void init() {
x1 = "arf arf arf";
}
}
@Test
public void test() {
Connection c = new Connection("dog", "ruff");
assertEquals("arf arf arf", c.getX1());
}
我有一些类似的东西(虽然稍微复杂一些),并且@PostConstruct方法没有被点击。
最佳答案
看看Spring JUnit Runner。
您需要将您的类注入(inject)测试类,以便spring可以构造您的类并调用post构造方法。请参阅宠物诊所示例。
例如:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:your-test-context-xml.xml")
public class SpringJunitTests {
@Autowired
private Connection c;
@Test
public void tests() {
assertEquals("arf arf arf", c.getX1();
}
// ...