我的测试方法中有以下代码
VirtualServer virtualServer = new VirtualServer();
virtualServer.initializeServlet();
virtualServer.setServeletObserver(new ANFlipNotAllowedFlagObserver());
.....
.....
以上2行表示为....触发dev代码,以便它命中我的虚拟服务器。
虚拟服务器类的代码如下: -
public class VirtualServer extends HttpServlet
{
private volatile Observer observer;
public synchronized Observer getServeletObserver ()
{
return observer;
}
public synchronized void setServeletObserver (Observer observer)
{
this.observer = observer;
}
protected void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
this.getServeletObserver().subject.setRequestResponse(request, response);
}
当我在调用setServeletObserver之后立即设置断点并检查virtualserver.getServeletObserver的值时,我会看到我使用我的设置设置的值。如果我在dopost方法中的virtualServer类中设置断点(在从testcode调用设置之后),我将observer对象的值视为null。我不确定为什么它为null。我的testclass已经在这个类上调用了setter方法。所以它不应该是空的。你能不能帮我找出什么是错的。我为Observer对象使用了volatile关键字。但它没有帮助。