为特定场景编写junit测试

时间:2013-02-13 18:23:35

标签: java junit junit4

我正在尝试为我的java web应用程序编写junit,它使用较旧的命令行设计模式(这个旧应用程序没有使用框架)。 我的应用程序中有一个场景。

当应用程序部署在服务器中时,首先服务器将找到web.xml并在部署所有内容之前加载并运行TestDataServlet(在web.xml中配置的扩展http servlet的servlet类)在服务器中。

这个TestDataServlet反过来调用TestRunnable类,它是一个加载所有属性文件的线程(关于端点关于我的应用程序代码的java类中使用的所有内容的信息)并在之前初始化它在浏览器中点击应用程序。

我正在尝试使用一次性步骤为这个应用程序编写junit,它会在运行我的junit之前加载所有属性文件,以便我可以轻松地测试它。

由于我的应用程序没有使用框架,我无法按照spring junit的说法执行此操作。

既然有反正呢?我可以在运行junit类之前运行TestDataServlet吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

修改TestDataServlet以便能够处理请求“isTestRunnableCompleted”。返回是真是假。

在JUnit测试中,实现setup()方法。调用TestDataServlet以启动runnable。然后,在setup()方法内的while()循环中,每隔一秒调用TestDataServlet来检查“isTestRunnableCompleted”。如果它是“假”,请休眠一秒钟,然后让循环再次拨打电话。您可能希望在循环中实现某种超时,以防出现问题。

祝你好运。

public class TestDataServlet
{
  public void doGet( HttpServletRequest request, HttpServletResponse response )
    throws ServletException, IOException 
  {
    // Look for some indicator in the request that the caller wants a "status"
    // of the test data being set up
    if ( request.getParameter( "isTestDataRunnableCompleted" ) != null )
    {
      boolean status = testDataRunnableThread.isAlive();

      PrintWriter writer = response.getWriter();
      writer.println( Boolean.toString( status ) );
      writer.close();       
    }
    else
    {
      // If we get here, then start the test data runnable thread
    }
  }
}