2016-09-14 149 views
1

您好我正在尋找一些方法來直接從我爲我們的RCP應用程序編寫的測試腳本運行一些Java代碼。從腳本運行Java代碼的RCPTT

我需要設置測試中的多播插座點擊應用中的一個特定的按鈕之前。這樣的事情:

MulticastSocket socket = new MulticastSocket(); 
socket.setNetworkInterface(interfaceTarget); 

InetAddress group = InetAddress.getByName("220.2.2.2"); 
socket.joinGroup(group); 

我無法找到任何方法來做這個只是想知道這是可能的嗎?

回答

1

你不能直接執行任意的Java代碼(即,通過寫或引用Java代碼在你的腳本),因爲AUT在一個單獨的進程中運行,你只可以從外部通信。

換句話說,腳本在RCPTT IDE或測試運行過程中執行。實際測試的應用程序(AUT)只包括RCPTT運行時,它有效地打開一個telnet套接字,通過它可以接收命令並通過文本語言發送結果。因此,一切都必須遵守該協議,並且您不能執行任何未經開箱即用的協議指定的內容。

也就是說,您可以通過腳本命令invokeinvoke-static來調用AUT中現有的Java類和方法。

的前提條件是invoke,你是能夠檢索通過腳本語言的對象引用。 例如,你可以使用

<get-something-from-somewhere> | get-object | invoke methodName arg0 arg1 ... 

前提通過invoke-static調用靜態方法是你要調用的方法是從AUT中訪問。爲了達到這個目的(如果你想要的方法不是AUT的一部分),你可以在AUT中添加一個測試支持包來聲明靜態方法。這樣你可以實現你的問題中給出的代碼片段。

最後,作爲第三和最先進的選項,你可以添加自己的ECL命令。這是通過實現一個由AUT運行時間定義的擴展點來實現的,並且包含AUT中的實現作爲捆綁包(類似於invoke-static方法,但更靈活,因爲可以構建命令鏈)

對於所有三種情況, this link作爲出發點,以執行任何種類的AUT中的自定義代碼...

+0

在我們沒有與RCPTT去爲我們的測試結束,但這將允許的Java調用......寧願如果儘管編寫這些命令並不麻煩,但是謝謝你的回答,我會接受它給其他人蔘考 – BrendanM

+0

@Stefan Winkler,答案並不清楚,你可以給我更多的細節或者更有幫助的鏈接? – noor

+0

@BrendanM你最終實現了哪個工具而不是rcptt? – noor