我正在Windows上使用NetBeans 7.4开发REST服务器(使用Java SE Runtime 1.7.0_21-b11).war随后部署在运行Tomcat(Java 1.7.0_45-b18)的Linux机器上,使用TeamCity自动构buildbuild立.war
我想unit testingREST方法使用实现HttpServletRequest,只实现了几个方法的自定义构build类。
public class HttpMockReq implements HttpServletRequest { @Override ... }
我的问题是,在Windows的我的开发环境中的接口的定义是不同的,当我在Linux上用ant编译它。 具体而言,在Linux版本中不存在的HttpServletRequest中定义了3个方法:
changeSessionId, upgrade
和
setContentLength
而Linux构build则抱怨说我不会用这些(伪)方法来覆盖任何东西。
我实际上与HttpServletResponse具有相同的问题
setContentLengthLong
我有点迷失了不同的库,工具和Java安装。 我不知道如何/为什么窗口端(它有一个稍微旧版本的Java 7)有一个更广泛的定义这些接口。
侧面的问题:有没有办法让这些环境之一接受@Ignore或更多的更丰富或更差的实现?
也许你的问题是你正在使用的Tomcat的版本。 changeSessionId()
方法changeSessionId()
Servlets 3.1规范 ,它只支持Tomcat 8.0.X,也许你已经安装了Tomcat 7.0.X,检查一下,如果是true,那么尝试下载并安装Tomcat 8.0.X(参见http ://tomcat.apache.org/whichversion.html )
不要实现接口,可以考虑扩展HttpServletRequestWrapper 。 如果您需要能够实现不同的不兼容的接口版本,请考虑创建一个代理 。
由于这是单元测试,所以考虑一个像Mockito这样的模拟框架。