如何在JMeter中运行groovy/geb测试?
我如何在JMeter中运行geb测试 我已经编译了一个测试的jar,并在JMeter中创建了一个BSF采样器。我已经为Jmeter安装了groovy插件 我的测试类如下所示:如何在JMeter中运行groovy/geb测试?,groovy,jmeter,phantomjs,spock,geb,Groovy,Jmeter,Phantomjs,Spock,Geb,我如何在JMeter中运行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
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}
}
}
我已经使用Gradle构建了这个测试类所需的所有依赖项的jar
然后在我的JMeterBSF采样器中,我将语言设置为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抛出以下异常:
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运行此测试的多个线程来执行负载测试。您可以通过JSR223采样器在JMeter中使用Groovy开箱即用:
- 在JMeter3.0之前,下载Groovy,将embeddeble/Groovy-all.jar复制到JMeter/lib并重新启动JMeter
- 从JMeter3.0开始,嵌入了Groovy
- 在JMeter3.0之前,下载Groovy,将embeddeble/Groovy-all.jar复制到JMeter/lib并重新启动JMeter
- 从JMeter3.0开始,嵌入了Groovy
但是,当运行单线程测试时,为了查看采样器是否工作,chrome浏览器将保持打开状态。不太清楚为什么。当运行多线程时,这将是一个问题,因为会有许多浏览器处于打开状态。目标是使用无头浏览器phantomjs,我也开始使用它。但是,如果我使用headless浏览器运行多个线程,则会留下多个实例,并在windows任务管理进程列表lol中可见。我能够找到一个适用于JMeter的Spock采样器。我能够运行我的测试。 如果其他人感兴趣,这里有链接。
但是,当运行单线程测试时,为了查看采样器是否工作,chrome浏览器将保持打开状态。不太清楚为什么。当运行多线程时,这将是一个问题,因为会有许多浏览器处于打开状态。目标是使用无头浏览器phantomjs,我也开始使用它。但是,如果我使用headless浏览器运行多个线程,则会留下多个实例,并且在windows任务管理进程列表lol中可见。因此,不要使用BSF,请尝试使用JSR223。你写的“groovy插件”是什么?我来试一试。插件基本上就是您描述的。只需将所有groovy JAR导入jmeter/lib/ext即可。我认为问题在于我试图将spock测试作为函数调用。也许这是不可能的?JSR223没有运气:(得到相同的异常。让我怀疑我调用了错误的spock测试。我在github上发现了一个spock采样器,它解决了我的问题。所以不要使用BSF,试试JSR223。什么是“groovy插件”你在写什么?我来试一试。插件基本上就是你描述的。只需将所有groovy JAR导入jmeter/lib/ext。我认为问题是我试图将spock测试作为函数调用。也许这不可能?JSR223不可能:(得到相同的异常。使我怀疑我调用了错误的spock测试。我在github上找到了一个spock采样器,解决了我的问题。为什么要从jmeter运行Geb测试?为什么要从jmeter运行Geb测试?