`
flashcloud
  • 浏览: 188856 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

MVP For GWT 系列资料转载五:More on unit testing with an injected JDO PersistenceManager

    博客分类:
  • GWT
 
阅读更多

源文转自:More on unit testing with an injected JDO PersistenceManager

 

Regarding my previous post, it turns out that I needed a TestPMF implementation sooner than I thought. The reason is the way I’m injecting a DispatchTestService in my unit tests (as described in this post). I’m calling createInjector() in the setUp() method, which gets run before each test method:

 

@Override
protected void setUp() throws Exception
{
	super.setUp();
	Injector inj = Guice.createInjector(new ServerModule(),
		new DispatchTestModule());
	testSvc = inj.getInstance(StandardDispatchService.class);
	// This pm is needed only for code in this class that calls a PM directly
	// ActionHandlers are injected with the PMF singleton from Guice
	pm = inj.getInstance(PMF.class).getPersistenceManager();
}

 

Since setUp() gets called before each test method, Guice is initialized for each test method, and therefore Guice calls the constructor for my DefaultPMF class for each test method. Repeated from the previous post, the DefaultPMF class looks like:

 

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();
	}
}

 

Because DefaultPMF creates a named PersistenceManagerFactory, JDO complains that the named PersistenceManagerFactory has already been created. My solution for now is to replace the DefaultPMF with a TestPMF that uses a Properties map to initialize the PersistenceManager, just as the AppEngineFan TestInitializer does. Here’s a working TestPMF:

 

package com.turbomanage.gwt.server;

import java.util.Properties;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;

public class TestPMF implements PMF
{
	private final PersistenceManagerFactory pmf;

	public TestPMF()
	{
		Properties newProperties = new Properties();
		newProperties
			.put("javax.jdo.PersistenceManagerFactoryClass",
				"org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory");
		newProperties.put("javax.jdo.option.ConnectionURL", "appengine");
		newProperties.put("javax.jdo.option.NontransactionalRead", "true");
		newProperties.put("javax.jdo.option.NontransactionalWrite", "true");
		newProperties.put("javax.jdo.option.RetainValues", "true");
		newProperties.put("datanucleus.appengine.autoCreateDatastoreTxns",
			"true");
		newProperties.put("datanucleus.appengine.autoCreateDatastoreTxns",
			"true");
		pmf = JDOHelper.getPersistenceManagerFactory(newProperties);
	}

	@Override
	public PersistenceManager getPersistenceManager()
	{
		return pmf.getPersistenceManager();
	}

}

 

Now simply bind PMF to its TestPMF implementation in your Guice module for tests (DispatchTestModule in the setUp() method above), and each unit test method will run with a freshly created PersistenceManager.

分享到:
评论

相关推荐

    GWT简介.docx

    **GWT(Google Web Toolkit)简介** GWT,全称为Google Web Toolkit,是Google推出的一款开源的Java开发框架,主要用于构建高性能、跨浏览器的富互联网应用程序(Rich Internet Applications,简称RIA)。GWT允许...

    基于Google.App.Engine(GAE)的Java和GWT应用开发.pdf

    This book is designed to give developers all the information they need to develop their own GAE+GWT applications, with a particular focus on some of the technologies useful for building scalable ...

    gwt-maven-plugin:开始使用Maven构建GWT项目

    gwt-maven-plugin 该插件旨在通过提供两种特定的打包方式: gwt-lib和gwt-app ,使使用Maven构建GWT项目更加容易。 基本用法 将插件添加到您的POM并启用扩展: < groupId>net.ltgt.gwt.maven</ groupId> ...

    GWT打包学习资料

    1. **GWT入门教程**:对于初学者,资料可能涵盖GWT的基本概念、开发环境搭建(如Eclipse插件配置)、Hello World示例、MVP(Model-View-Presenter)设计模式的介绍,以及如何创建和运行第一个GWT项目。 2. **GWT...

    gwt-maven-plugin:旧版GWT Maven插件

    现在,该插件被认为是legacy GWT maven plugin (又名mojo GWT maven插件),而新插件被认为是new generation GWT maven plugin (又名tbroyer GWT maven插件)。 仍然支持旧版maven插件,但强烈建议将新插件用于新...

    GWT.rar_On Purpose_gwt

    **标题:“GWT.rar_On Purpose_gwt”** 这个标题表明我们关注的是Google Web Toolkit (GWT)的一个特定主题,即其“目的”。"On Purpose"可能是指深入理解GWT的设计理念、应用场景以及如何有效地利用它来开发Web应用...

    gwt for eclipse 3.7/3.6

    Eclipse是一款广泛使用的集成开发环境(IDE),而GWT for Eclipse则是Eclipse的一个插件,专门用于支持GWT应用程序的开发。这个插件针对Eclipse的3.7和3.6版本进行了优化,以提供更好的开发体验。 GWT的核心功能...

    GWT in Action

    Expanding on the concepts covered in Chapter 10, this chapter delves into common usage patterns and custom serialization for GWT-RPC. It covers techniques such as polling and emulating server-push. #...

    使用 Cypal Studio for GWT 简化 Ajax 开发

    **Cypal Studio for GWT** 是一个专为 **Eclipse IDE** 设计的插件,旨在简化基于 **Google Web Toolkit (GWT)** 的 **Ajax** 应用程序的开发流程。通过使用 GWT,Java 开发人员可以利用纯 Java 语言编写富互联网...

    Gwt开发文档

    4. **GWT MVP模式**: Model-View-Presenter (MVP) 是GWT推荐的架构模式,它有助于分离视图逻辑、业务逻辑和数据模型,使得代码更易于维护和测试。 5. **异步通信(GWT RPC)**: GWT提供了Remote Procedure Call (RPC)...

    GWT进阶教程

    **GWT(Google Web Toolkit)** 是一个由Google开发的开放源代码JavaScript开发框架,它允许Java开发者使用Java语言编写Web应用程序,然后自动编译成优化的JavaScript代码。GWT进阶教程旨在帮助开发者深入理解并熟练...

    Spring4GWT技术资料

    Spring4GWT是将Spring框架与Google Web Toolkit (GWT) 结合的一种技术,它旨在帮助开发者在GWT应用中更好地实现服务层管理和依赖注入,从而提升开发效率和代码的可维护性。以下是对Spring4GWT技术的详细说明: 1. *...

    GWT RPC详细例子:代码加文档说明

    GWT(Google Web Toolkit)是Google推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言编写Web应用程序,并自动生成优化的JavaScript代码。RPC(Remote Procedure Call)是GWT中的一个核心特性,用于...

    《GWT揭秘》试读:运行调试项目

    《GWT揭秘》试读:运行调试项目 GWT(Google Web Toolkit)是Google推出的一款用于构建高性能、跨浏览器的富互联网应用程序(Rich Internet Applications,RIA)的开发框架。它允许开发者使用Java语言来编写客户端...

    gwt 练习 gwt学习

    GWT,全称为Google Web Toolkit,是一个开源的Java框架,用于构建高性能、可维护的富互联网应用程序(RIA)。GWT允许开发者使用Java语言编写客户端代码,然后通过编译器将其转换为优化过的JavaScript,以便在各种...

    gwt学习资料和实例项目

    **GWT(Google Web Toolkit)** 是一个由Google开发的开放源代码工具包,用于构建高性能的、基于JavaScript的Web应用程序。它允许开发者使用Java语言编写客户端代码,并自动将其编译为优化过的JavaScript,从而提高...

    gwt学习资料

    标题 "GWT 学习资料" 指的是 Google Web Toolkit(GWT)的相关学习资源。GWT 是一个开源的Java框架,它允许开发者使用Java语言编写客户端的Web应用程序,然后自动生成优化过的JavaScript代码,使得应用能在浏览器上...

    gwt技术介绍

    GWT(Google Web Toolkit)是一个开源的Java开发框架,由Google公司开发,主要用于简化Web应用的开发。它允许开发者使用Java编写客户端的代码,然后通过GWT提供的编译器自动转换成浏览器可以执行的JavaScript和HTML...

    gwt入门-gwt从这里开始

    Google Web Toolkit (GWT) 是一个强大的开源框架,它允许开发者使用 Java 语言来构建复杂的、高性能的 web 应用程序。GWT 提供了一种高效的方法,将 Java 代码编译成 JavaScript 和 HTML,使其能在客户端浏览器中...

Global site tag (gtag.js) - Google Analytics