2012-05-01 146 views

回答

0

基于注释的Web服务的优点之一是您可以轻松地对它们进行单元测试。

class WebServiceEndpoint { 

    @Path("/foo/{fooId}") 
    @POST 
    @Produces({ MediaType.APPLICATION_XML }) 
    public Response doFoo(@PathParam("fooId") Integer fooId) { 
     /// ... web service endpoint implementation 
    } 

} 

如果你使用Spring的安全Servlet过滤器,那么就不应在doFoo方法任何安全相关的代码,所以你可以创建一个新的WebServiceEndpoint类并调用方法。所以这是“禁用”安全性的一种方式。

当你说登录过程是'硬',你是什么意思?如果您成功登录过一次,那么您可以在其他单元测试中重复使用相同的代码(例如,在@Before方法中)。

0

只是测试它作为pojo。传入任何内容,返回任何内容,根本不加载应用程序上下文 - 这将是一个集成测试。

在不加载框架的情况下轻松测试功能的能力是spring的关键优势之一。

0

你不会说什么是“难”,所以我假设你已经在你的REST服务中有一些东西,即在你想测试的java方法中,它需要认证结果。 Spring有用于嘲笑认证结果的实用程序。例如,你可以做一个@Before设置方法如下:

Object principal = null; // fix this 
Object credentials = null; // fix this 
Authentication auth = new org.springframework.security.authentication.TestingAuthenticationToken(principal, credentials); 
SecurityContextHolder.getContext().setAuthentication(auth); 

但同样,你还没说你实际上是试图解决什么问题?