سؤال

أحاول مقارنة صفيفتين في Groovy. لقد أسفرت محاولاتي حتى الآن عن استجابة مختلطة ، وبالتالي أنتقل إلى الجماعي للحصول على المشورة.

في الكود التالي ، آخذ ردود راحة 2 ، وأحللها ووضع كل شيء تحت عقدة الفاتورة في صفيف. بعد ذلك ، أقوم بتأهيل صفيفتي أيضًا ، لذا لدي قائمة بالفواتير ثم أحاول مقارنة نتائج الإجابات لضمان وجودهما.

عندما أقارن مجموعة الفواتير (GUIDS) التي تتطابق معها - هذا ليس ما أتوقعه لأن ترتيب الفاتورة يختلف حاليًا بين مصادر الاستجابة الخاصة بي.

عندما أقوم بفرز صفائف الفواتير ، تختلف النتائج.

أظن أن الكود الخاص بي معيب ، لكن أمضيت ساعة في الهز ، ولكن دون جدوى.

أي نصيحة بشأن تصنيف المصفوفات في مرونة أو على الكود أدناه ستكون موضع تقدير أكبر:

gu = new com.eviware.soapui.support.GroovyUtils( context )
def xmlSlurper = new groovy.util.XmlSlurper()

// Setting up the response parameters
def responseSTAGE = xmlSlurper.parseText(context.expand('${GET Invoices - STAGE#Response}'));
def responseSTAGE2 = xmlSlurper.parseText(context.expand('${GET Invoices - STAGE2#Response}'));
responseInvoicesSTAGE = responseSTAGE.Invoices
responseInvoicesSTAGE2 = responseSTAGE2.Invoices

def arrayOfInvoicesSTAGE = []
def arrayOfInvoicesSTAGE2 = []

def counter = 0

for (invoice in responseInvoicesSTAGE.Invoice) {
    arrayOfInvoicesSTAGE[counter] = responseInvoicesSTAGE.Invoice[counter].InvoiceID
    //log.info counter+" STAGE"+arrayOfInvoicesSTAGE[counter]
    arrayOfInvoicesSTAGE2[counter] = responseInvoicesSTAGE2.Invoice[counter].InvoiceID
    //log.info counter+" STAGE2"+arrayOfInvoicesSTAGE2[counter]
    counter++
}

log.info arrayOfInvoicesSTAGE
log.info arrayOfInvoicesSTAGE2


def sortedSTAGE = arrayOfInvoicesSTAGE.sort()
def sortedSTAGE2 = arrayOfInvoicesSTAGE2.sort()
log.info sortedSTAGE
هل كانت مفيدة؟

المحلول

جانبا ، لا يمكنك استبدال:

def arrayOfInvoicesSTAGE = []
def arrayOfInvoicesSTAGE2 = []

def counter = 0

for (invoice in responseInvoicesSTAGE.Invoice) {
    arrayOfInvoicesSTAGE[counter] = responseInvoicesSTAGE.Invoice[counter].InvoiceID
    //log.info counter+" STAGE"+arrayOfInvoicesSTAGE[counter]
    arrayOfInvoicesSTAGE2[counter] = responseInvoicesSTAGE2.Invoice[counter].InvoiceID
    //log.info counter+" STAGE2"+arrayOfInvoicesSTAGE2[counter]
    counter++
}

مع

def arrayOfInvoicesSTAGE  = responseInvoicesSTAGE.Invoice*.InvoiceID
def arrayOfInvoicesSTAGE2 = responseInvoicesSTAGE2.Invoice*.InvoiceID

نصائح أخرى

تعتبر صفائفان متساوية في مرموقة إذا كان لديهم نفس العدد من العناصر وكل عنصر في نفس الوضع متساوي. يمكنك التحقق من ذلك عن طريق تشغيل الكود التالي في وحدة التحكم الرائعة

Integer[] foo = [1,2,3,4]
Integer[] bar = [4,3,2,1]

assert foo != bar

bar.sort()

assert foo == bar
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top