该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-07
源文转自:Unit testing with JDO PersistenceManager injected via Guice
This is a follow-up to last week’s post on unit testing ActionHandlers with Guice. David Peterson pointed out on the gwt-dispatch mailing list that I could inject a PersistenceManager into my ActionHandlers in order to provide an alternate PersistenceManager for unit testing. I don’t actually need an alternate PM yet as it is handled transparently by my AppEngine test environment, but I thought it would be easier to do it sooner rather than later, so here goes.
I’ve created an interface called PMF (in order to avoid confusion with JDO’s PersistenceManagerFactory).
package com.turbomanage.gwt.server; import javax.jdo.PersistenceManager; public interface PMF { PersistenceManager getPersistenceManager(); }
My default PMF implementation works exactly the same as before:
package com.turbomanage.gwt.server; import javax.jdo.JDOHelper; import javax.jdo.PersistenceManager; import javax.jdo.PersistenceManagerFactory; public final class DefaultPMF implements com.turbomanage.gwt.server.PMF { private final PersistenceManagerFactory pmfInstance = JDOHelper .getPersistenceManagerFactory("transactions-optional"); public DefaultPMF() { } @Override public PersistenceManager getPersistenceManager() { return pmfInstance.getPersistenceManager(); } }
The DefaultPMF gets bound in my Guice ServerModule:
@Override protected void configureHandlers() { ... bind(PMF.class).to(DefaultPMF.class).in(Singleton.class); ... }
And finally, the PMF is injected into an ActionHandler:
public class AddUserHandler implements ActionHandler<AddUserAction, AddUserResult> { @Inject private PMF pmf; private PersistenceManager pm; @Override public AddUserResult execute(AddUserAction action, ExecutionContext context) throws ActionException { this.pm = pmf.getPersistenceManager(); ... } ... }
Now, when the need arises for a test implementation of PMF, I can easily bind a different implementation in my Guice TestModule as shown in the earlier post.
Update: I did not test this thoroughly before I posted, and the need for a TestPMF arose just hours later. See my next post for the solution. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1134 次