JUnit能否在测试结束时比较两个XML文件并进行区分?

JUnit能否在测试结束时比较两个XML文件并进行区分?,junit,Junit,JUnit能否在测试结束时比较两个XML文件并进行区分?有人在网上有这样的例子吗?也许这对你有帮助,也许没有。如果您希望识别一个小的差异,那么这个简单的示例可能会奏效。我喜欢流畅的断言,但也因为它提供了一些有用的失败信息 package example; import static org.assertj.core.api.Assertions.*; import com.google.common.base.Joiner; import org.junit.Test; public cl

JUnit能否在测试结束时比较两个XML文件并进行区分?有人在网上有这样的例子吗?

也许这对你有帮助,也许没有。如果您希望识别一个小的差异,那么这个简单的示例可能会奏效。我喜欢流畅的断言,但也因为它提供了一些有用的失败信息

package example;

import static org.assertj.core.api.Assertions.*;

import com.google.common.base.Joiner;
import org.junit.Test;

public class XmlDiffExample {

    private static final String NEWLINE = System.getProperty("line.separator");
    private Joiner j = Joiner.on(NEWLINE);

    private String[] xml = new String[] {
        "<?xml version='1.0'?>",
        "<container>",
            "<greeting>hello, %s!</greeting>",
        "</container>"
    };

    @Test
    public void should_diff_xml_docs() {
        assertThat(getDoc1()).isEqualTo(getDoc2());
    }

    private String getDoc1() {
        return String.format(j.join(xml), "world");
    }

    private String getDoc2() {
        return String.format(j.join(xml), "foo");
    }

}
包示例;
导入静态org.assertj.core.api.Assertions.*;
导入com.google.common.base.Joiner;
导入org.junit.Test;
公共类xml示例{
私有静态最终字符串NEWLINE=System.getProperty(“line.separator”);
专用Joiner j=Joiner.on(新线);
私有字符串[]xml=新字符串[]{
"",
"",
“你好,%s!”,
""
};
@试验
public void应_diff_xml_docs(){
断言(getDoc1()).isEqualTo(getDoc2());
}
私有字符串getDoc1(){
返回String.format(j.join(xml),“world”);
}
私有字符串getDoc2(){
返回String.format(j.join(xml),“foo”);
}
}
收益率:

org.junit.ComparisonFailure: expected:<...>
<greeting>hello, [foo]!</greeting>
</cont...> but was:<...>
<greeting>hello, [world]!</greeting>
</cont...>
org.junit.ComparisonFailure:应为:
你好,[foo]!
但是:
你好,[世界]!

JUnit没有内置任何内容。你必须分析这两者,在树上走走,判断它们是否相同。为什么字符串比较不够?在这种情况下,某些分支总是不同的。只有一些分支需要相同,而那些分支需要不同。干杯XMLUnit正是这样做的。然后我将使用字符串比较来比较需要相同的子树。树是递归的