Java 如何为post请求创建测试

Java 如何为post请求创建测试,java,junit,Java,Junit,我有一个方法,可以在第三方资源中发送post请求,并返回CloseableHttpResponse结果。我(第一次)尝试为我的项目实现junittest。。我知道如何测试返回简单对象的方法,但我不知道-如何测试可能的类似测试方法 public CloseableHttpResponse POST(String path, Map<String, String> parameters) throws URISyntaxException, IOException { List&

我有一个方法,可以在第三方资源中发送
post
请求,并返回
CloseableHttpResponse
结果。我(第一次)尝试为我的项目实现
junit
test。。我知道如何测试返回简单对象的方法,但我不知道-如何测试可能的类似测试方法

public CloseableHttpResponse POST(String path, Map<String, String> parameters) throws URISyntaxException, IOException {
    List<NameValuePair> pairParameters = generateListOfNameValuePair(parameters);
    URI uri = new URIBuilder()
            .setScheme(SSL_SCHEME)
            .setHost(HOST)
            .setPath(path)
            .build();
    HttpRequestBase postMethod = new HttpPost(uri);
    try {
        ((HttpPost) postMethod).setEntity(new UrlEncodedFormEntity(pairParameters, "UTF-8"));
    } catch (UnsupportedEncodingException initE) {
        initE.printStackTrace();
    }
    return session.getHttpClient().execute(postMethod, session.getHttpContext());
}
public CloseableHttpResponse POST(字符串路径,映射参数)抛出URISyntaxException,IOException{
List pairParameters=generateListOfNameValuePair(参数);
URI=新的URIBuilder()
.setScheme(SSL_方案)
.setHost(主机)
.setPath(路径)
.build();
HttpRequestBase postMethod=新的HttpPost(uri);
试一试{
setEntity(新的UrlEncodedFormEntity(pairParameters,“UTF-8”);
}捕获(不支持DencodingException initE){
initE.printStackTrace();
}
返回session.getHttpClient().execute(postMethod,session.getHttpContext());
}

如果使用spring引导,则可以使用Mockito单元测试

这是一个演示如何实现mockMvc和单元测试方法的示例

   @RunWith(SpringJUnit4ClassRunner.class)
   @WebAppConfiguration
   public class StockPlanControllerTest {

    @Autowired
    public WebApplicationContext context;
    public MockMvc mockMvc;
    @Before
    public void setUp() {
    mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
    }

  @Test
  public void POST(String path, Map<String, String> parameters) throws URISyntaxException, IOException {

   mockMvc.perform(post(path)
    .contentType(MediaType.APPLICATION_JSON)
    .param("paramkey", "paramvalue"))
    .andExpect(status().isOk());
   }
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
公共类StockPlanController测试{
@自动连线
公共WebApplicationContext上下文;
公共MockMvc-MockMvc;
@以前
公共作废设置(){
mockMvc=MockMvcBuilders.webAppContextSetup(context.build();
}
@试验
public void POST(字符串路径、映射参数)抛出URISyntaxException、IOException{
mockMvc.perform(post(路径)
.contentType(MediaType.APPLICATION_JSON)
.param(“paramkey”、“paramvalue”))
.andExpect(status().isOk());
}
要了解有关Mockito单元测试的更多信息,本教程将为您提供更多帮助。

为什么不允许使用方法
param
contentType
?(
import org.springframework.test.web.servlet.MockMvc;
)您应该静态导入post(path)或像那样使用=>MockHttpServletRequestBuilder post=MockMvcRequestBuilders.post(path);