我正在尝试为我的java web应用程序编写junit,它使用较旧的命令行设计模式(这个旧应用程序没有使用框架)。 我的应用程序中有一个场景。
当应用程序部署在服务器中时,首先服务器将找到web.xml
并在部署所有内容之前加载并运行TestDataServlet
(在web.xml中配置的扩展http servlet的servlet类)在服务器中。
这个TestDataServlet
反过来调用TestRunnable
类,它是一个加载所有属性文件的线程(关于端点关于我的应用程序代码的java类中使用的所有内容的信息)并在之前初始化它在浏览器中点击应用程序。
我正在尝试使用一次性步骤为这个应用程序编写junit,它会在运行我的junit之前加载所有属性文件,以便我可以轻松地测试它。
由于我的应用程序没有使用框架,我无法按照spring junit的说法执行此操作。
既然有反正呢?我可以在运行junit类之前运行TestDataServlet
吗?
感谢任何帮助。
答案 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
}
}
}