GAE 1.3.8中使用JUnit 4进行单元测试

貌似从1.3.1开始,gae采用了新的junit实现方法。junit本身非常简单,这个就不说了。但是在使用的过程中,我还是遇到了不少的问题。
因为GAE的数据库不是与应用独立的,如果在单元测试中直接使用与数据库操作相关的jdo代码,就会弹出一大堆Exception。谷歌的官方code上有介绍如何使用local unit testing(需要跳墙),其中提到了如果单元测试中需呀使用数据库,就要配置环境,而Google在com.google.appengine.tools.development.testing这个包中提供了许多类如LocalServiceTestHelper,可以自动完成环境配置。
郁闷的是我使用的是Eclipse 3.5,GAE的SDK是安装插件时自动下载的。我在测试类中导入com.google.appengine.tools.development.testing时总是找不到包。上网查了很多资料也没提到这个问题,官网上说在命令行编译带本地数据库操作的junit for gae时,需要导入appengine-api.jar,appengine-api-labs.jar,appengine-api-stubs.jar,我在本地工程文件中发现,使用向导生成的GAE Project并未导入这些包。于是自己下了个gae sdk,将appengine-java-sdk-1.3.8\lib\impl路径下的这三个包加入工程的build path里。另外还有appengine-java-sdk-1.3.8\lib\testing\appengine-testing.jar,把这个加入到build path就可以用LocalServiceTestHelper等这些测试辅助类了。
import java.util.Iterator;

import javax.jdo.Extent;
import javax.jdo.PersistenceManager;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
import com.xiaohulu.wordMemorizor.dataObject.User;
import com.xiaohulu.wordMemorizor.util.PMF;
import static org.junit.Assert.*;

public class AccessServiceTest {

private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig());

@Before
public void setUp() {
helper.setUp();
}

@After
public void tearDown() {
helper.tearDown();
}

@Test
public void testInsert() {
User user = new User();
user.setUsername("dagebai");
user.setPassword("123");
user.setIsMan(true);
user.setEmail("badsf");
user.setIntro("blablabla");
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(user);
Extent extent = pm.getExtent(User.class);
Iterator iter = extent.iterator();
while (iter.hasNext()) {
User user2 = (User) iter.next();
System.out.println(user2.getUsername());
}
extent.closeAll();
pm.close();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值