我有一个Java EE应用程序,它处理来自不同接口的大量消息。 (某些)功能测试是使用SoapUI执行的。
在其中一个案例中,我创建了一个SOAP VirtResponse步骤,该步骤接收我的应用程序的输出并检查收到的消息中的值。测试包括以下步骤:
有一种情况(好的,还有更多场景),输入不应该生成输出。我想检查我的应用程序是否在这种情况下没有发送输出。
策略1: 我添加了第四个groovy步骤,我在其中验证步骤3的结果是一个空字符串。为了使测试通过,我必须禁用TestCase Options中的复选框,其中显示“Error TestCase on Error”。这适用于快乐执行测试的情况。但是,如果确实发生了错误(例如,应用程序确实发送了响应,或者应用程序发送了错误的响应),则整个TestCase设置为通过(因为复选框)并且只有特定步骤深入到日志失败。这使得很难看到整个测试套件的结果。
尝试策略2: 通过添加条件测试步骤开始,该步骤将基于输入跳过步骤3。然而,这样我就不再验证我的应用程序是否在不应该发送消息时发送消息。
检查这些场景的最佳方法是什么?
编辑:
如果数据源中的某个方案失败,则整个测试用例应该失败。 (如果这意味着某些方案尚未评估,那么这不是问题)
Groovy脚本:
// Get flag from datasource that indicates if a message should be received
def soapBerichtOntvangen = context.expand('${DataSourceUISBerichten#SoapBerichtOntvangen}' );
// Get the message from the previous step.
def receivedSoapRequest = context.expand( '${SOAPVirtResponse#Request#declare namespace out=\'http://application/messageprocessing/outbound/out:SendOutboundMessage[1]/Message[1]}' )
// If we don't expect a message the flag is set to "N"
if(soapBerichtOntvangen=="N"){
assert(receivedSoapRequest=="")
} else if(receivedSoapRequest!=null && receivedSoapRequest!=""){
def slurpedMessage = new XmlSlurper().parseText(receivedSoapRequest)
def messageType=slurpedMessage.MessageHeader.MessageReference.MessageType
// Get expected values from context
def verwachtMessageType = context.expand('${DataSourceOutboundCIBerichten#messageType}' )
assert(String.valueOf(messageType)==verwachtMessageType)
} else {
// Should have received a message, but none came up.
assert(false)
}