我目前正在考虑将Mockito和JUnit集成到我的Wicket / Spring / Hibernate项目中,并找到了如何使用注释来完成此操作的教程。
麻烦是我对@Autowired不熟悉,看了谷歌之后我发现很难看出这个注释和@SpringBean注释之间的区别。
他们是同一个人还是我应该注意的差异?
我的代码为这个问题提供了一些背景信息:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = false)
public class TestHome
{
private WicketTester tester;
@Autowired
private ApplicationContext ctx;
@Autowired
private WebApplication webApplication;
@Before
public void setUp() {
tester = new WicketTester(webApplication);
}
@Test
@Transactional
@Rollback(true)
public void testRenderHomePage() {
tester.startPage(Home.class);
tester.assertRenderedPage(Home.class);
tester.assertComponent("home", Home.class);
}
}
答案 0 :(得分:5)
如果使用Wicket SpringComponentInjector,它会使用自己的注入。 @Autowired注释是一个Springframework注释,但Wicket SpringComponentInjector忽略了这一点。因此,Wicket注释是@SpringBean,它标记了Spring bean或必须存在于Spring上下文中的组件自动装配(注入)的字段。
在你的代码片段中,你使用SpringJUnit4ClassRunner运行器,所以你的字段是由Spring注入的,所以它是正确的。
查看示例,如何在How can I get a Spring bean injected in my custom Wicket model class?
使用SpringComponentInjector