2013-01-16 33 views
10

Tôi có thể bao gồm tập lệnh groovy từ một tệp bên ngoài như thế nào? enter image description hereSOAPUI: Cách bao gồm tập lệnh Groovy từ một tệp bên ngoài

Tôi đã cố gắng sử dụng:

def script = new GroovyScriptEngine('d:/soapui/payment.v2').with { 
    loadScriptByName('proxy.groovy') 
} 
this.metaClass.mixin script 

Nhưng tôi nhận được:

enter image description here

Cập nhật

Có tồn tại một số khả năng để đóng gói các phương pháp của tôi vào jar hoặc một cái gì đó như thế này, và sử dụng chúng từ Script TextArea?

Trả lời

14

Cách đơn giản nhất là để chạy nó bằng cách sử Groovy thử nghiệm Bước trong soapUI

import groovy.lang.Binding 
import groovy.util.GroovyScriptEngine 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 

// location of script file is relative to SOAPUI project file. 
String scriptPath = groovyUtils.projectPath + "/groovy/" 

// Create Groovy Script Engine to run the script. 
GroovyScriptEngine gse = new GroovyScriptEngine(scriptPath) 

// Load the Groovy Script file 
externalScript = gse.loadScriptByName("Utility.groovy") 

// Create a runtime instance of script 
instance = externalScript.newInstance() 

// Sanity check 
assert instance!= null 

// run the foo method in the external script 
instance.foo() 
+0

kinda muộn như wel, nhưng sẽ xảy ra khi bạn xuất dự án thành WAR? sau đó bạn cần một thư mục groovy/ở đâu đó trên máy chủ? – Dave

+0

Tôi đã không thử nó, nhưng nếu nó được tổ chức tương đối so với dự án nó sẽ làm việc tốt. –

1

Hãy thử điều này:

GroovyShell gs = new GroovyShell(getBinding()); 
gs.evaluate(new File('path/to/external.groovy').text); 

Hoặc ngay cả điều này:

evaluate(new File('path/to/external.groovy')); 
+0

Tôi nhận được 'java.lang.Exception không thể nhận thuộc tính 'requestContext' trên đối tượng null' cho cả hai. bạn đã kiểm tra chúng trước khi đăng? – CAMOBAP

+0

Kiểm tra mã trong tệp bên ngoài của bạn. Công cụ Groovy chạy nó và có ngoại lệ. Thay thế nội dung của tệp bên ngoài bằng lệnh đơn giản để xem cách hoạt động: log.info "Xin chào từ tệp bên ngoài" –

+0

Khi tôi đặt nội dung của tệp bên ngoài vào Script TextArea, nó hoạt động hoàn hảo. Vấn đề xảy ra mỗi khi tôi thử truy cập vào các biến 'log',' context', 'requestContext',' mockRequest' và 'mockResponse' – CAMOBAP

0

Đối với các thông báo lỗi mixin, bạn có thể thoát khỏi điều đó nếu bạn sử dụng ExpandoMetaClass.enableGlobally() và sau đó this.metaClass = null. ở đầu, trước khi bạn bắt đầu pha trộn trong.

2

Bạn cũng có thể tạo ra các kịch bản của bạn trong java (Eclipse) và sau đó xuất khẩu như một cái lọ và thêm vào soapui.

Sau đây là các bước:

  1. Tạo mã của bạn trong lớp java bên trong một gói.
  2. Nhấp chuột phải vào gói và xuất khẩu (chọn jar)
  3. Thêm jar này để soapUI bin thư mục// ext (hãy chắc chắn để đóng soapUI trước khi bước này)
  4. restart soapUI và bây giờ bạn có thể nhập và sử dụng các kịch bản bên trong soapui như dưới đây.

  5. Tạo một bước groovy và import jar

    nhập gói name.class tên

  6. Gọi chức năng như:

    tên lớp name.function (tham số);

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