1

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

当应用程序部署在服务器中时,首先服务器将找到web.xml并加载并运行TestDataServlet(在 web.xml 中配置的 servlet 类,它扩展了 http servlet),然后一切都部署到服务器中。

TestDataServlet又调用了TestRunnable类,该类是一个线程,它加载所有属性文件(包含有关端点的所有信息,这些信息在我的应用程序代码的 java 类中使用)并在浏览器中点击应用程序之前对其进行初始化。

我正在尝试通过在运行我的 junit 之前加载所有属性文件的一步来为这个应用程序编写 junit,以便我可以轻松地对其进行测试。

由于我的应用程序没有使用框架,因此我无法像 spring junit 那样做到这一点。

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

任何帮助表示赞赏。

4

1 回答 1

2

修改您的 TestDataServlet 以能够处理请求“isTestRunnableCompleted”。让回报是真还是假。

在您的 JUnit 测试中,实现 setup() 方法。调用 TestDataServlet 来启动 runnable。然后,在 setup() 方法内的 while() 循环中,每秒调用 TestDataServlet 以检查“isTestRunnableCompleted”。如果为“false”,则休眠一秒钟,然后让循环再次进行调用。您可能还想在循环中实现某种超时,以防万一出现问题。

祝你好运。

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
    }
  }
}
于 2013-02-13T19:18:10.713 回答