Java 如何在Mockito中模拟servletContext以使用addListener? 公共类ServletInitializer扩展了AbstractAnnotationConfigDispatchersServletInitializer{ @凌驾 启动时公共void(ServletContext ServletContext)引发ServletException{ super.onStartup(servletContext); addListener(新的MyServletContextListener()); 字符串skipCookie=System.getProperty(“skipCookie”); 如果(!StringUtils.equals(skipCookie,“Y”)){ servletContext.getSessionCookieConfig().setHttpOnly(true); servletContext.getSessionCookieConfig().setSecure(true); } 设置SystemProperties(); } }

Java 如何在Mockito中模拟servletContext以使用addListener? 公共类ServletInitializer扩展了AbstractAnnotationConfigDispatchersServletInitializer{ @凌驾 启动时公共void(ServletContext ServletContext)引发ServletException{ super.onStartup(servletContext); addListener(新的MyServletContextListener()); 字符串skipCookie=System.getProperty(“skipCookie”); 如果(!StringUtils.equals(skipCookie,“Y”)){ servletContext.getSessionCookieConfig().setHttpOnly(true); servletContext.getSessionCookieConfig().setSecure(true); } 设置SystemProperties(); } },java,unit-testing,mockito,Java,Unit Testing,Mockito,我正在尝试为上述方法创建测试,以获取intellij上的代码覆盖率,但我始终无法通过servletContext.addListener行,因为我一直遇到以下异常: java.lang.UnsupportedOperationException at org.springframework.mock.web.MockServletContext.addListener(MockServletContext.java:734) at org.springfr

我正在尝试为上述方法创建测试,以获取intellij上的代码覆盖率,但我始终无法通过
servletContext.addListener
行,因为我一直遇到以下异常:

    java.lang.UnsupportedOperationException
        at org.springframework.mock.web.MockServletContext.addListener(MockServletContext.java:734)
        at org.springframework.web.context.AbstractContextLoaderInitializer.registerContextLoaderListener(AbstractContextLoaderInitializer.java:64)
        at org.springframework.web.context.AbstractContextLoaderInitializer.onStartup(AbstractContextLoaderInitializer.java:50)
        at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(AbstractDispatcherServletInitializer.java:63)
我应该如何创建单元测试?下面是我目前所做的,注释行是我已经尝试过的

@InjectMocks
ServletInitializer servletInitializerMock;
@试验
public void onStartup()引发ServletException{
MockServletContext servletContextMock=新的MockServletContext();
//MockServletContext spy=Mockito.spy(servletContextMock);
//MyServletContextListener MyServletContextListener=mock(MyServletContextListener.class);
//doNothing().when(spy).addListener(新的MyServletContextListener());
//Mockito.doNothing().when(servletContextMock).addListener(mock(MyServletContextListener.class));
servletInitializerMock.onStartup(servletContextMock);
//AbstractAnnotationConfigDispatchersServletInitializer.onStartup(servletContextMock);
}

ServletContext-servletContextMock=mock(ServletContext.class)怎么样;当(servletContextMock.addListener(any(MyServletContextListener.getClass())).doNothing()时;@Soenderby hi,我收到了以下错误:IllegalStateException:无法注册名为“dispatcher”的servlet。检查是否有另一个servlet以相同的名称注册。我一直在仔细查看您试图测试的内容,在我看来似乎没有任何“原始的”此方法中的行为。相反,它似乎执行了许多其他操作,这些操作应该进行单元测试。这似乎是进行单元测试而不是单元测试的一个很好的候选者。虽然这是一个意见问题,但我建议不要仅为了代码覆盖率而进行测试。您好,是的,我知道我们不应该仅为了覆盖率,但我的代码计划用于生成,如果我的代码覆盖率没有达到某个百分比,我就无法将其推出这可能不是一个道德建议,但代码覆盖率由测试期间执行的代码决定,而不一定由测试的代码决定。您可以通过测试来运行此代码。如果您如果你特别有创意,你甚至可以测试一些有用的方法,同时避免困难的部分。