标签: xmlunit

UnitTesting的.net Xml比较器

我有几个单元测试,我需要确保方法生成的XML包含与预期的Xml文档相同的元素/值.

我在Java中使用了xmlunit,虽然它们有.net版本但它似乎不支持命名空间.在.net中有没有替代方法呢?

只要我可以比较2个Xml字符串并得到一个真/假的结果告诉我它们是否匹配,只要涉及到的数据,我很高兴...

.net xml nunit unit-testing xmlunit

8
推荐指数
2
解决办法
1386
查看次数

如何使用java和xmlunit比较两个xml与相同的命名空间但不同的前缀

我有2个xml文件:

问题出在属性前缀中.

<element xmlns:prefix1="namespace" prefix1:attribute="some value">Some text</element>


<element xmlns:prefix2="namespace" prefix2:attribute="some value">Some text</element>
Run Code Online (Sandbox Code Playgroud)

这两个xml是相同的,具有相同的命名空间,但具有不同的前缀.如果我与xmlunit比较 - >断言失败.我该怎么处理?

在类似()或相同()比较的情况下,我有错误:

预期的属性名称'message:MessageNameString'但是'null'
预期的属性名称'message:MessageVersion'但是'null'
预期的属性名称'null'但是'mes:MessageNameString'
预期的属性名称'null'但是'mes': MessageVersion"

java xml namespaces xmlunit

8
推荐指数
1
解决办法
5916
查看次数

将类似的xml文件与XmlUnit与无序标记进行比较(具有不同属性的相同标记名称)

我正在尝试成功运行XmlUnit,对我的工作非常有帮助.现在,我有一点问题,我不知道如何解决.我有一个java类,它有一个Set,当它转换为XML时,里面的元素可以有任何顺序.

当我在XmlUnit中尝试这两个文件时,它可以工作(Diff说它们是相似的):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptorA name="netInput_mynetwork"></MeasureDescriptorA>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
        <MeasureDescriptorA name="netInput_mynetwork"></MeasureDescriptorA>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)

但是当标签具有相同的名称(具有不同的属性)时,它不起作用(它混合了属性,并期望另一个标签中的属性):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
        <MeasureDescriptor name="netInput_mynetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Monitor>
    <AvailableMeasures>
        <MeasureDescriptor name="netInput_mynetwork"></MeasureDescriptor>
        <MeasureDescriptor name="netInput_myothernetwork"></MeasureDescriptor>
    </AvailableMeasures>
</Monitor>
Run Code Online (Sandbox Code Playgroud)

有没有解决方法?

java xml xmlunit

6
推荐指数
1
解决办法
4848
查看次数

如何比较XMLUnit中的两个相似的XML文件

我想使用XMLUnit来比较两个相似的XML文件.

基本上每件事都是一样的,File1是副本File2,但在File2我已经改变了一个节点中某些元素的顺序.

我正在尝试运行一个测试,它比较这些文件并返回类似的结果,而不是将这些文件视为不同.

xmlunit

5
推荐指数
1
解决办法
1万
查看次数

XMLUnit Compare Xml 比较错误的节点

当父节点的顺序不同时,我遇到问题。例如:

示例 XML1

<level1>
   <name>FirstParent</name>
   <level2>
        <somefield>AAA</somefield>
   </level2>
   <level2>
        <somefield>BBB</somefield>
   </level2>       
</level1>
<level1>
   <name>SecondParent</name>
   <level2>
        <somefield>CCC</somefield>
   </level2>
   <level2>
        <somefield>DDD</somefield>
   </level2>
</level1>
Run Code Online (Sandbox Code Playgroud)

示例 XML2

<level1>
   <name>SecondParent</name>
   <level2>
        <somefield>DDD</somefield>
   </level2>
   <level2>
        <somefield>CCC</somefield>
   </level2>
</level1>
<level1>
   <name>FirstParent</name>
   <level2>
        <somefield>BBB</somefield>
   </level2>
   <level2>
        <somefield>AAA</somefield>
   </level2>          
</level1>
Run Code Online (Sandbox Code Playgroud)

当我调试 RecursiveElementNameAndTextQualifier 时,我发现它正在将 FirstParent 作为控制节点,将 SecondParent 作为测试节点。因此,正确地得出节点不同的结论。但我需要的是将 FirstParent 和 SeconParent 与其他文件中的正确匹配进行比较。

所以,似乎我需要首先对更高级别的节点进行排序(?)。

有谁知道我该如何克服这个问题?我应该以不同的方式检查/修改/实现什么,以将正确的父级串联传递给 ElementQualifier ?

也许,有了正确的方向,我就能开发出需要的东西。

xml compare xmlunit

5
推荐指数
1
解决办法
1689
查看次数

比较两个xml并使用Java找到丢失的节点

这困扰了我好几天.我只需要通过比较找出第二个xml中缺少的节点.我试过xmlunit,但它并没有真正帮助我找到丢失的节点,因为它逐行比较.两个样本xml如下:xml1:

<test testcase="101">
    <value="1">
    <value="2">
    <value="3">
</test>
Run Code Online (Sandbox Code Playgroud)

XML2:

<test testcase="101">
    <value="3">
    <value="2">
</test>
Run Code Online (Sandbox Code Playgroud)

请注意,value = 3实际上在第二个副本中它只是到达第一个节点,但我仍然认为它没有丢失.我如何找到丢失的节点值="1"?

java xml xmlunit

5
推荐指数
0
解决办法
627
查看次数

如何忽略 XML 声明与 XmlUnit 的差异?

如何配置 XmlUnit.Net 在比较两个文档时忽略 XML 声明?

假设我有以下控制文档:

<?xml version="1.0" encoding="utf-8"?>
<a><amount>1</amount></a>
Run Code Online (Sandbox Code Playgroud)

我想比较一下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a><amount>1</amount></a>
Run Code Online (Sandbox Code Playgroud)

比较应该没有差异。

我的期望是使用像这样的 NodeFilter 应该可以工作,但事实并非如此:

var diff = DiffBuilder.Compare(control)
    .WithTest(test)
    .WithNodeFilter(n => n.NodeType != XmlNodeType.XmlDeclaration)
    .Build();

diff.Differences.Count().Should().Be(0);
Run Code Online (Sandbox Code Playgroud)

断言因两个差异而失败 - 一个是编码(大小写不同),另一个是独立属性。我对任何一个都不感兴趣。

我说n.NodeType != XmlNodeType.XmlDeclarationn.NodeType == XmlNodeType.XmlDeclaration说都没有区别。

我正在使用 XMLUnit.Core v2.5.1。

xmlunit xmlunit-2

5
推荐指数
1
解决办法
1457
查看次数

忽略 xmlunit 中的空标签

有没有办法完全忽略 XMLUnit 中的空标签,以便在比较时不考虑它?前任:

<a>
<b/>
<c>data1</c>
<d>data2</d>
</a>
Run Code Online (Sandbox Code Playgroud)

<a>
<c>data1</c>
<d>data2</d>
</a>
Run Code Online (Sandbox Code Playgroud)

不应返回任何差异。是否有任何内置函数可以执行此操作?谢谢。

java xmlunit

4
推荐指数
1
解决办法
1382
查看次数

SoapUI log.info在比较两个xml文件并记录差异时出于某种原因打开对话框

出于某种原因,执行以下脚本时,不仅会在日志中打印输出,还会在信息弹出对话框中打印输出.有人可以向我解释为什么会发生这种情况以及如何防止它发生?

import groovy.io.FileType;
import org.custommonkey.xmlunit.*;

def file1 = "somepath/file1.xml"
def file2 = "somepath/file2.xml"

def xml1 = new FileReader(file1)
def xml2= new FileReader(file2)
XMLUnit.setIgnoreWhitespace(true)
XMLUnit.setIgnoreComments(true)
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true)
XMLUnit.setNormalizeWhitespace(true)

DetailedDiff myDiff = new DetailedDiff(new Diff(xml1, xml2));
List allDifferences = myDiff.getAllDifferences();

allDifferences.each { difference ->
    log.info (difference)
}
Run Code Online (Sandbox Code Playgroud)

编辑:通过实验,我发现以下行:

List allDifferences = myDiff.getAllDifferences();
Run Code Online (Sandbox Code Playgroud)

是对话弹出的原因.我猜测getAllDifferenes()方法导致弹出对话框.

我仍然想要一些帮助来确定一个可行的替代方案,因为我试图比较两个xml文件并打印文件中的差异.

groovy soapui xmlunit

2
推荐指数
1
解决办法
2566
查看次数

如何使用XMLUnit的DetailedDifference忽略相同元素的顺序?

我想使用XMLUnit比较两个xml文件.我希望DetailedDiff不以不同的顺序报告相同的标签作为差异.例如,如果我使用这两个片段创建了一个DetailedDiff:

 <a><b/><c/></a>
Run Code Online (Sandbox Code Playgroud)

<a><c/><b/></a>
Run Code Online (Sandbox Code Playgroud)

由于b和c标签乱序,DetailedDiff将创建两个差异.我已经尝试重写元素限定符,但它不会导致任何更改.我做错了什么或者这与XMLUnit无关?这里的参考是我用来比较两个xml文件的代码(不包括overrideElementQualifier调用).

public List<Difference> getDifferenceList(Reader file1, Reader file2) {
    Diff d = new Diff(file1, file2); //I'm passing the args as FileReaders
    d.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
    detailedDiff = new DetailedDiff(d);
    List<Difference> allDifferences = detailedDiff.getAllDifferences();
    return allDifferences;
}
Run Code Online (Sandbox Code Playgroud)

java xmlunit

2
推荐指数
1
解决办法
2174
查看次数

标签 统计

xmlunit ×10

java ×5

xml ×5

.net ×1

compare ×1

groovy ×1

namespaces ×1

nunit ×1

soapui ×1

unit-testing ×1

xmlunit-2 ×1