程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 PowerMock 对 Jsoup 进行单元测试大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Powermock 对 Jsoup 进行单元测试?

开发过程中遇到使用 Powermock 对 Jsoup 进行单元测试的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Powermock 对 Jsoup 进行单元测试的解决方法建议,希望对你解决使用 Powermock 对 Jsoup 进行单元测试有所启发或帮助;

我想做一些单元测试,但我在测试静态方法方面很挣扎。我的问题是,在我的程序中,我通过 Jsoup 获得了两个不同的文档,它们用于生成一个 inputStream(一个用于提取 HTML 网页,另一个用于提取然后应用网页的特定样式)。 此外,我使用抽象类来避免为我正在编写的每个新算法重新编写相同的代码。

这是我要测试的一段代码:

public abstract class BaseHTMLToHTML implements HTMLToHTML@R_874_9260@ce {

@autowired
HTMLLayout HTMLLayout;

protected inputStream geTinputStream(document doc,Element content,String url) throws IOException {
    Element CSSlink = doc.SELEct("link").last();
    String CSShref = CSSlink.attr("href").replace("./../../../../","");
    //GetTing document via Jsoup
    document CSSDoc = getdocument(url + CSShref);
    Elements CSSELER_788_11845@ents = CSSDoc.getAllElements();
    content.append("<style>" + CSSELER_788_11845@ents.outerHTML() + "</style>");

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    outputStream.write(content.outerHTML().getBytes());
    outputStream.close();

    return new ByteArrayinputStream(outputStream.toByteArray());
}

protected document getdocument(String url) throws IOException {
    return Jsoup.connect(url).get();
}
}

@@R_874_9260@ce
public class EurLexhtmlToHTML@R_874_9260@ce extends BaseHTMLToHTML {

private static final String eurlex_URL = "https://eur-lex.europa.eu/";

@OverrIDe
public inputStream urlToHTML(Map<String,String> params) throws IOException {
    //GetTing document via Jsoup
    document document = getdocument(params.get("url"));
    Element content = document.body();
    // GetTing document via Jsoup
    return geTinputStream(document,content,eurlex_URL);
}
}

这是我迄今为止尝试过的:

@RunWith(powermockrunner.class)
@PrepareForTest(Jsoup.class)
@SpringBoottest
class EurLexhtmlToHTML@R_874_9260@CETest {

@Test
voID urlToHTMLSetUpCorrectStyle() throws IOException,URISyntaxException {

    Map<String,String> params = ImmutableMap.of(
            "url",url,"hasOnlyOnesheet","false","hasborders","false"
    );

        Connection connection = mockito.mock(Connection.class);
    mockito
            .when(Jsoup.connect(url))
            .thenReturn(connection);


    mockStatic(Jsoup.class);

    powermockito
            .when(connection.get())
            .thenReturn(new document("src/test/resources/eurlexTest.HTML"));



    powermockito.when(eurLexhtmlToHTMl.getdocument(url))
            .thenReturn(new document("src/test/resources/eurlexTest.HTML"));


    powermockito.when(eurLexhtmlToHTMl.getdocument(styleUrl))
            .thenReturn(new document("src/test/resources/eurlexStyleTest.HTML"));



    assertthat(eurLexhtmlToHTMl.urlToHTML(params))
            .hasContent("<style>test</style>");
}
}

但我收到以下错误消息

org.mockito.exceptions.misusing.MissingMethodInvocationException: 
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用 PowerMock 对 Jsoup 进行单元测试全部内容,希望文章能够帮你解决使用 PowerMock 对 Jsoup 进行单元测试所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。