seam的集成测试有做过的吗?我这里总是不能得到注入的组件

tianyun 2008-11-26

环境:eclipse3.4+TestNG 插件+Seam2.1+Wicket1.3 +Tomcat6.0

最近项目使用了wicket1.3+seam2.1的架构,基本上已经可以跑通,不过在做集成测试的时候出了问题。
首先说明的是单元测试是没有什么问题的,因为它和配置也没有什么关系。

 

比较痛苦的就是集成测试了,参照手册31章的例子,以及国外网站的帖子,配置好persistence.xml和components.xml,这时应用程序可以在tomcat中运行。但一运行集成测试就报错,经检查发现取得的组件内的其他组件全都是空的,没有初始化。下面是测试代码:

/**
 * 登录管理测试用例
 */
public class LoginServiceTest extends SeamTest {

	/**
	 * 登录成功用例
	 */
	@Test
	public void testLoginSuccess() throws Exception {

		new ComponentTest() {
			@Override
			protected void testComponents() throws Exception {
				UserService userservice = (UserService)getValue("#{userService}");
				User user1 = userservice.getUser("402881af1dd2c0d4011dd2c2373b0002");
				assert "mans".equals(user1.getUsername());
			}
		}.run();
	}

  

UserService 的代码如下:

@Name("userService")
@AutoCreate
@Scope(ScopeType.STATELESS)
public class UserService {
	
	@In
	SystLogService log;
	
	@In(value = "loginInfo")
	public LoginInfo loginInfo;
	
	@In(value="userDao")
	private HibernateEntityDao<User> userDAO;
	
	@In(value="userJobDao")
	private HibernateEntityDao<UserJob> userJobDao;
	
	/**
	 * 根据ID获取	 * 
	 * @param userId
	 * @return 返回指定的职员
	 */
	public User getUser(String userId) {
		User user  = (User)userDAO.findUnique("username", userId);
		if(user == null) {
			throw new LogicException("CGIP_COMM_001");
		}
		return user;
	}
}

 其中在运行TestNG后,跟踪测试用例,发现可以得到userService并且不为null,只是userService中的logInfo,userDAO等都是null,这样一来就没办法执行下去了。为此查了好多资料,看了很多例子,大多数也是这么写的,但为什么出现这种情况呢?如果哪位兄弟遇到过类似的情况,请告知一二,谢谢关注。

 

风之狐 2008-12-09
呵呵,我也碰到同样的问题,请问有人解决了么
Global site tag (gtag.js) - Google Analytics