Java Wiremock:HTTP网站测试,无UI

Java Wiremock:HTTP网站测试,无UI,java,integration-testing,wiremock,Java,Integration Testing,Wiremock,我被要求如何在没有UI的情况下测试HTTP网站。比如说,我们有一个google网站搜索功能(不是Web服务),我需要测试它。如何开始?谁能给出一些例子(JUnit)(Get/Post方法)请允许我启动此项目。我尝试阅读官方文档,但没有找到任何相关内容。请提前感谢。您可以使用以下代码片段完成此操作 public class Searcher { public String search(String searchUrl, String searchWord) throws IOExcep

我被要求如何在没有UI的情况下测试HTTP网站。比如说,我们有一个google网站搜索功能(不是Web服务),我需要测试它。如何开始?谁能给出一些例子(JUnit)(Get/Post方法)请允许我启动此项目。我尝试阅读官方文档,但没有找到任何相关内容。请提前感谢。

您可以使用以下代码片段完成此操作

public class Searcher {

    public String search(String searchUrl, String searchWord) throws IOException, URISyntaxException {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            URIBuilder builder = new URIBuilder(searchUrl);
            builder.setParameter("search_term", searchWord);

            HttpGet request = new HttpGet(builder.build());
            HttpResponse httpResponse = httpClient.execute(request);

            return convertResponseToString(httpResponse);
        }
    }

    private String convertResponseToString(HttpResponse response) throws IOException {
        try (Scanner scanner = new Scanner(response.getEntity().getContent(), "UTF-8")) {
            String responseString = scanner.useDelimiter("\\Z").next();

            return responseString;
        }
    }
}

public class SearcherTest {

    @Rule
    public WireMockRule wireMockRule = new WireMockRule(options().dynamicPort());

    @Test
    public void searchTest() throws IOException, URISyntaxException {
        String searchWord = "something";
        String expectedResult = "Your expected result";

        stubFor(get(urlPathEqualTo("/search"))
            .withQueryParam("search_term", equalTo(searchWord))
            .willReturn(aResponse()
                    .withBody(expectedResult)));

        Searcher searcher = new Searcher();
        String searchResult = searcher.search("http://localhost:" + wireMockRule.port() + "/search", searchWord);

        verify(getRequestedFor(urlPathEqualTo("/search"))
            .withQueryParam("search_term", equalTo(searchWord)));
        assertEquals(expectedResult, searchResult);
}

}

我理解。但是,当您的代码调用搜索url时,必须传入类似“+wireMockRule.port()+”的内容/whateveryouwant“然后你可以对这个搜索进行存根,并给出一个类似我的示例的响应。我需要从规则设置到存根编码的更详细的示例。你真的是一个很有帮助的人。”。非常感谢。我没有看到任何谷歌网站的URL请求。验证(getRequestedFor(urlPathEqualTo(“/search”))。使用queryparam(“search_term”,equalTo(searchWord));这种类型的测试将替换Selenium浏览器,并使用http方法get post进行测试。我说的对吗?你也可以用硒测试来做。这只是一个从Java代码发出GET请求的示例。对于第一个问题,在我的示例中,您必须定义存根侦听的URL。在我的示例中,它在“/search”上侦听请求。然后必须将url传递给进行搜索调用的组件。