0

我正在使用 struts2-junit-plugin 为 struts2 Web 应用程序编写测试用例,我的问题是在我的操作类中有一些与数据库相关的查询,它们使用数据源(jndi)我如何在我的测试用例中模拟它。

编辑

在这个测试中,我正在设置远程用户。

public void testexecute()
{   
    try 
    {   
        ActionProxy proxy = getActionProxy("/index");

        IndexAction action = (IndexAction) proxy.getAction();

        request.setRemoteUser("Haider");


        assertTrue(action.execute().equals(ActionSupport.SUCCESS));

        assertTrue(true);
    }
    catch(Exception ex)
    {
        assertTrue(false);
    }       
}

在 IndexAction (implements PrincipalAware) 我有这个

 public String execute()
 {  
    try
    {   
        if(principleProxy != null)
        {
            userModel = new UserModel();
            userModel.setUserName(principleProxy.getRemoteUser());              
        }
        else
        {
            return ERROR;
        }       
  ................................
  .................................

 }

在我运行测试时,在 index ation principalProxy 中为空。

4

1 回答 1

1

您可以考虑使用Dbunit

DbUnit 是针对数据库驱动项目的 JUnit 扩展(也可与 Ant 一起使用),其中包括在测试运行之间将您的数据库置于已知状态。这是避免当一个测试用例损坏数据库并导致后续测试失败或加剧损坏时可能发生的无数问题的极好方法。

DbUnit 能够将您的数据库数据导出和导入 XML 数据集。从 2.0 版开始,当在流模式下使用时,DbUnit 也可以处理非常大的数据集。DbUnit 还可以帮助您验证您的数据库数据是否与预期的一组值匹配。

于 2014-08-01T17:45:00.677 回答