MKh*_*aja 2 groovy soapui xmlunit
出于某种原因,执行以下脚本时,不仅会在日志中打印输出,还会在信息弹出对话框中打印输出.有人可以向我解释为什么会发生这种情况以及如何防止它发生?
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文件并打印文件中的差异.
这是不是与XMLUnit测试类(一个问题Diff,DetailedDIff等等),这是该行为groovy与在SOAPUI Groovy脚本测试步骤连词:在groovy语言,如果你没有指定return,那么最后计算的表达式是默认的返回值,因此,当Groovy脚本测试步骤单独执行时,SOAPUI会捕获return并且如果它不null打印字符串对象表示(如果您执行groovy测试步骤作为测试用例的一部分,则不会发生这种情况,因为SOAPUI脚本不会捕获并显示return).即如果您在SOAPUI上执行下一个groovy脚本:
def a = 3 + 1
Run Code Online (Sandbox Code Playgroud)
groovy正在添加return,所以你真的有:
def a = 3 + 1
return a
Run Code Online (Sandbox Code Playgroud)
并且SOAPUI捕获return并显示下一个对话框:

所以你可以修复这个行为null,最后在一个变量中分配一个变量,return如下所示:
import groovy.io.FileType;
import org.custommonkey.xmlunit.*;
...
DetailedDiff myDiff = new DetailedDiff(new Diff(xml1, xml2));
List allDifferences = myDiff.getAllDifferences();
allDifferences.each { difference ->
log.info (difference)
}
// ADD THIS LINE TO AVOID DIALOG BOX
def dontCare = null; // groovy add return dontCare :)
Run Code Online (Sandbox Code Playgroud)
要么:
import groovy.io.FileType;
import org.custommonkey.xmlunit.*;
...
DetailedDiff myDiff = new DetailedDiff(new Diff(xml1, xml2));
List allDifferences = myDiff.getAllDifferences();
allDifferences.each { difference ->
log.info (difference)
}
// ADD THIS LINE TO AVOID DIALOG BOX
return;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助,