我已经开始使用 Wicket 并且选择了Guice作为依赖注入框架。现在我正在尝试学习如何为 WebPage 对象编写单元测试。
我用谷歌搜索了一下,找到了这篇文章,但它提到了 AtUnit,所以我决定试一试。
我的网页类看起来像这样
public class MyWebPage extends WebPage
{
@Inject MyService service;
public MyWebPage()
{
//here I build my components and use injected object.
service.get(id);
....
}
}
我创建了 mock 以用它替换任何生产 MyServiceImpl ,我猜与 AtUnit 一起使用的 Guice 应该注入它。
现在的问题是:
AtUnit 期望我用 @Unit 标记目标对象 - 没关系,因为我可以将已经创建的对象传递给 WicketTester
@Unit MyWebPage page = new MyWebPage(); wicketTester.startPage(page);
但通常我会用类名调用 startPage 。
我认为 AtUnit 也期望目标对象是带有 @Inject 的市场,因此 AtUnit 可以创建和管理它 - 但我得到一个org.apache.wicket.WicketRuntimeException: There is no application attach to current thread main。我可以指示 AtUnit 使用来自 wicketTester 的应用程序吗?
- 因为我不在 MyWebPage 上使用 @Inject(我认为)所有应该由 Guice 注入的对象都是空的(在我的示例中,服务引用是空的)
我真的在 Wicket 环境中找不到任何关于 AtUnit 的信息。我做错了什么,我错过了什么吗?