2014-12-10 10 views
7

Tôi đang sử dụng bước Groovy với Soapui. Các mã sau đây được làm việc tốt nhưng nó có vẻ là dài và lặp đi lặp lại:Làm thế nào để sử dụng nếu tuyên bố khác với Groovy?

if(response.comp.type[3] == "value1") 
log.info ("value1 is present") 
else 
log.info ("value1 is not present") 

if(response.comp.bucket[3] == null) 
log.info ("bucket = null") 
else 
log.info ("bucket is not null") 

if(response.comp.cycle[3] == "new") 
log.info ("settings cycle = new") 
else 
log.info ("settings cycle is null") 

Có thể làm như vậy trong một bài kiểm tra thay vì lặp lại những lệnh if và else trên mỗi dòng. tôi đã thử với TRY CATCH nhưng tôi không thể có dấu vết ngăn xếp của lỗi.

Bất kỳ ai cũng có thể giúp giảm mã. Cảm ơn bạn

+0

Theo ví dụ, câu trả lời và nhận xét, tôi thấy khó để khái quát hóa, có vẻ như mỗi trường hợp là khá cụ thể. – Will

Trả lời

3

tôi không biết nếu điều này sẽ được sở thích của bạn nhưng bạn có thể sử dụng switch thay vì có một tuyên bố dài if..else như:

def x = response.comp.type[3] 
switch(x){ 
    case "value1" : log.info("value1 is present") 
    ... 
    default: log.info("value is not present") 
} 

nơi x là giá trị mà bạn sẽ gán cho nó. và làm tương tự cho response.comp.bucket[]response.comp.cycle[]

Sửa

tôi đã sửa đổi mã, tuyên bố x là chủ sở hữu của response.comp.type [3] và kiểm tra xem nó có "value1".

+0

tôi đã thêm dòng này trước mã của bạn def x = new int [0,1,2,3,4,5] và trường hợp này 3: log.info ("value1 is present") nó không hoạt động với tôi –

+0

ý tôi là gì bằng cách đặt x vào 'response.comp.try [x]' là giá trị của nó phụ thuộc vào những gì bạn sẽ đặt vào nó. dựa trên ví dụ của bạn, bạn có 'response.comp.type [3]' thì bạn sẽ phải đặt câu lệnh đó trong câu lệnh switch như 'switch (response.comp.type [3])' – nap011

9

Như các lĩnh vực đều khác nhau mà bạn vẫn cần phải làm mỗi lần kiểm tra nhưng một hình thức ngắn gọn hơn sẽ là:

log.info (response.comp.type[3] == "value1" ? "value1 is present" : "value1 is not present") 
log.info (response.comp.bucket[3] == null ? "bucket = null" : "bucket is not null") 
log.info (response.comp.cycle[3] == "new" ? "settings cycle = new" : "settings cycle is null") 

Với nỗ lực nhiều hơn chút bạn có thể làm giảm sự trùng lặp nhưng có nguy cơ làm cho mã hơn khó đọc. Ví dụ.

log.info "bucket ${response.comp.bucket[3] == null ? '=' : 'is not'} null" 

Như bạn có thể thấy, trong trường hợp này ít nhất, biểu mẫu thứ hai khó đọc hơn.

+0

Cảm ơn bạn Michael, mã thứ hai, tôi phải tạo biến trong thuộc tính và tôi sẽ tạo ra ít nhất 30, nó có thể là giải pháp –

+0

Nhưng vấn đề phản hồi có thể thay đổi, vì vậy tôi không thể cập nhật mọi lúc, nếu tôi có thể làm phức tạp mã này –

Các vấn đề liên quan