2016-04-27 28 views
1

我將如何去JMeter中運行geb測試?如何在JMeter中運行groovy/geb測試?

我編譯了一個我的測試jar,並在JMeter中創建了一個BSF採樣器。我已經安裝了Jmeter的groovy插件。

我的測試類看起來是這樣的:

class LoginLogoutTest extends GebSpec { 
    def "Login Logout"() { 
    given: "Go to the Login Page" 
    LoginPage loginPage = to LoginPage 

    when: 
    loginPage.login("admin", "password") 
    then: 
    DashboardPage dashboardPage = at DashboardPage 

    when: 
    dashboardPage.logout() 
    then: 
    waitFor {at LoginPage} 
    } 
} 

我用搖籃建立與這個測試類的所有所需的依賴罐子。

然後在我的JMeter BSF採樣器中,我設置了groovy語言並編寫了以下腳本。正如一些教程所示,我的web-test.jar位於JMeters \ lib目錄中。

import com.geb.tests.LoginLogoutTest; 

LoginLogoutTest myTest = new LoginLogoutTest(); 

myTest."Login Logout"(); //if commented out i get no errors 

當我嘗試調用"Login Logout"()功能JMeter的拋出follolwing異常:

WARN - jmeter.protocol.java.sampler.BSFSampler: BSF error org.apache.bsf.BSFException: exception from Groovy: groovy.lang.MissingFieldException: No such field: $spock_sharedField__browser for class: org.codehaus.groovy.runtime.NullObject 

如果我不調用該方法的JMeter不拋出任何錯誤,所以我假設我初始化在我的JMeter腳本中正確地從我的jar中的類。

這樣做的原因是我們可以通過使用PhantomJs運行此測試的多個線程來執行負載測試。

+0

爲什麼要從jmeter運行Geb測試? –

回答

0

您可以通過JMeter的JSR223取樣器使用盒的Groovy的輸出:

  • JMeter的3.0之前,下載Groovy中,複製嵌入/ Groovy的all.jar在到JMeter的/ lib目錄,並重新啓動JMeter的

  • 從JMeter的3.0開始,Groovy中嵌入

+0

是的。我已經添加了所有的時髦罐子。謝謝 – WontonJon

+0

所以不要使用BSF,請嘗試使用JSR223。什麼是你寫的「groovy插件」? –

+0

我會給它一個鏡頭。插件基本上就是你所描述的。只需將所有的groovy jar導入到jmeter/lib/ext。我認爲問題在於我試圖將spock測試稱爲函數。也許這是不可能的? – WontonJon

0

我能找到一個JMeter的斯波克樣的作品。我能夠運行我的測試。 如果其他人有興趣,請點擊此鏈接。 JMeter Spock Sampler 但是,運行單線程測試時,爲了查看採樣器的工作原理,chrome瀏覽器保持打開狀態。不太清楚爲什麼。這在運行多線程時會成爲問題,因爲會有很多瀏覽器保持打開狀態。目標是使用無頭瀏覽器phantomjs,我也已經開始工作。但是,如果我用無頭瀏覽器運行多個線程,有多個實例留在後面,並在Windows任務管理進程列表中可見。