Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单元测试是否存在类似assertmlequals的东西_Java_Html_Junit - Fatal编程技术网

Java 单元测试是否存在类似assertmlequals的东西

Java 单元测试是否存在类似assertmlequals的东西,java,html,junit,Java,Html,Junit,在我的测试中,我检查: assertEquals("<div class=\"action-button\" title=\"actionButton\">"</div>", result); 第2条: <ldapConfigurations> <ldapdd tenantid="" active="false"> </ldap> </ldapConfigurations> 但正如你所看到的,它们不是。(请参阅:ld

在我的测试中,我检查:

assertEquals("<div class=\"action-button\" title=\"actionButton\">"</div>", result);
第2条:

<ldapConfigurations>
<ldapdd tenantid="" active="false">
</ldap>
</ldapConfigurations>


但正如你所看到的,它们不是。(请参阅:
ldapdd

这不一定适用于您的情况,但如果您的HTML恰好是有效的XML,则会。您可以使用名为的工具。使用它,您可以编写如下所示的断言方法:

public static void assertXMLEqual(Reader reader, String xml) {
    try {
        XMLAssert.assertXMLEqual(reader, new StringReader(xml));
    } catch (Exception ex) {
        ex.printStackTrace();
        XMLAssert.fail();
    }
}

如果这对您不起作用,那么可能还有其他用于HTML比较的工具。如果这不起作用,您可能希望最终使用像jtagsoup这样的库(或其他什么),并比较它解析的所有字段是否相等

您可以通过的
TolerantSaxDocumentBuilder
实用程序实现格式错误的HTML断言

要支持格式不正确的HTML(例如没有结束标记的元素,这在XML中是不可想象的),必须使用额外的文档生成器
TolerantSaxDocumentBuilder
,以及
HTMLDocumentBuilder
(这将允许在网页上断言)。之后,像往常一样断言文档

工作代码示例:
您正在寻找HTML验证器,还是要检查两个
字符串(碰巧有HTML)是否相等?检查两个字符串(碰巧有HTML)是否相等您担心的是类似
的东西等同于
,但不等同于它?您能否显示您的代码,说明如何传递它们?我知道这对我来说是失败的。html在大多数情况下都是xml,所以它可能会有所帮助。我认为这是因为它们不是标准的html标记(它是一个
HTMLDocumentBuilder
)。请尝试将
放在两个字符串之前,将
放在两个字符串之后。@ses在我将这些字符串添加到字符串之后,它在这里起作用(答案中的方法)。@ses实际上,在字符串的开头(或中间)放置一个简单的
(或任何其他HTML元素,如
)就足以提示文档生成器生成HTML。如果您需要经常测试这样的代码片段,我认为您可以在每个测试字符串的开头添加这样的内容?
public static void assertXMLEqual(Reader reader, String xml) {
    try {
        XMLAssert.assertXMLEqual(reader, new StringReader(xml));
    } catch (Exception ex) {
        ex.printStackTrace();
        XMLAssert.fail();
    }
}
TolerantSaxDocumentBuilder tolerantSaxDocumentBuilder =
                         new TolerantSaxDocumentBuilder(XMLUnit.newTestParser());
HTMLDocumentBuilder htmlDocumentBuilder =
                         new HTMLDocumentBuilder(tolerantSaxDocumentBuilder);
XMLAssert.assertXMLEqual(htmlDocumentBuilder.parse(expectedHTML),
                         htmlDocumentBuilder.parse(actualHTML));
public class TestHTML {
    public static void main(String[] args) throws Exception {
        String result = "<div             class=\"action-button\"                title=\"actionButton\">            </div>";
        assertHTMLEquals("<div class=\"action-button\" title=\"actionButton\"></div>", result); // ok!

        // notice it is badly formed
        String expectedHtml = "<html><title>Page Title</title>"         
                + "<body><h1>Heads<ul>"
                + "<li id='1'>Some Item<li id='2'>Another item";

        String actualMalformedHTML = expectedHtml.replace(" ", "     "); // just added some spaces, wont matter
        assertHTMLEquals(expectedHtml, actualMalformedHTML); // ok!

        actualMalformedHTML = actualMalformedHTML.replace("Heads", "Tails");
        assertHTMLEquals(expectedHtml, actualMalformedHTML); // assertion fails
    }

    public static void assertHTMLEquals(String expectedHTML, String actualHTML) throws Exception {
        TolerantSaxDocumentBuilder tolerantSaxDocumentBuilder = new TolerantSaxDocumentBuilder(XMLUnit.newTestParser());
        HTMLDocumentBuilder htmlDocumentBuilder = new HTMLDocumentBuilder(tolerantSaxDocumentBuilder);
        XMLAssert.assertXMLEqual(htmlDocumentBuilder.parse(expectedHTML), htmlDocumentBuilder.parse(actualHTML));
    }
}
<dependency>
    <groupId>xmlunit</groupId>
    <artifactId>xmlunit</artifactId>
    <version>1.4</version>
</dependency>