当前位置: 首页 > 知识库问答 >
问题:

如何通过Gradle任务运行JMeter GUI?

程智明
2023-03-14

我想从我的Gradle脚本运行JMeter GUI,这样我就可以仔细控制版本和环境因素,这样我的本地开发人员机器构建1就没有必要的设置了。

我的JMeter的构建。gradle(多项目构建的一部分):

plugins{
  id 'base'
  id 'java'
}

repositories {
  jcenter()
}

dependencies {
  compile 'org.apache.jmeter:ApacheJMeter:4.0'
}

task jmeterGui(type: JavaExec){
  workingDir = "$project.buildDir/jmeter-working-dir"
  classpath = sourceSets.main.runtimeClasspath

  main = "org.apache.jmeter.NewDriver"

  doFirst{
    println "running Jmeter from Gradle"
    mkdir workingDir

  }
}
> Task :functional-test:jmeterGui
java.lang.Throwable: Could not access <source root>\functional-test\build\lib
  at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:102)
java.lang.Throwable: Could not access <source root>\functional-test\build\lib\ext
  at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:102)
java.lang.Throwable: Could not access <source root>\functional-test\build\lib\junit
  at org.apache.jmeter.NewDriver.<clinit>(NewDriver.java:102)
java.lang.ClassNotFoundException: org.apache.jmeter.JMeter
  at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at org.apache.jmeter.NewDriver.main(NewDriver.java:242)
JMeter home directory was detected as: <source root>\functional-test\build

1目前,在我的构建中,所有内容都受到严格的版本控制,是Gradle构建的一部分。这包括NodeJS、NPM和Terraform。从字面上看,唯一的设置先决条件是Java8 JDK。我想用JMeter继续这种方法。

共有1个答案

濮金鑫
2023-03-14

下面是我目前从Gradle运行JMeter GUI的最佳尝试。注意,GUI启动了,但是几乎不起作用(甚至不能打开测试计划)。

dependencies {
  // using the runtime classpath instead of compile in order to avoid
  // downloading all these and their deps in places where we never intend
  // to run the JMeter GUI (continuous build environments, etc.)
  runtime 'org.apache.jmeter:ApacheJMeter:4.0'
  runtime 'org.apache.jmeter:jorphan:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_core:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_components:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_config:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_functions:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_java:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_http:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_tcp:4.0'
  runtime 'org.apache.jmeter:ApacheJMeter_parent:4.0'
}

task launchJmeterGui(type: JavaExec){
  description = "Launch the JMeter GUI for editin test plans"
  workingDir = "$project.buildDir/jmeter-working-dir"
  classpath = sourceSets.main.runtimeClasspath

  // This is the main class that the jmeter.bat file invokes.
  // I think this thing is specifically intended to be invoked from a batch/
  // shell script and is not intended to be invoked like this.
  main = "org.apache.jmeter.NewDriver"

  // I think this controls where the log file goes, not sure.
  args "--homedir=${workingDir.absolutePath}"

  doFirst{
    println "Launching Jmeter from Gradle"

    // log file ends up in here
    mkdir workingDir

    // I don't put anything in here, but there will be errors in the console
    // output if they don't exist.  I think this is where the darcula jar
    // needs to be in order to work?
    mkdir "$buildDir/lib"
    mkdir "$buildDir/lib/ext"
    mkdir "$buildDir/lib/junit"

    // Copied into the source tree from a JMeter 4.0 install.
    // Will run without these files but will print errors to console/log file.
    // I'm happy to put these under source control, that makes sense to me.
    project.copy {
      from "src/test/resources/jmeter.properties"
      from "src/test/resources/log4j2.xml"
      into "$buildDir/bin"
    }

  }
}
 类似资料:
  • 问题内容: 我正在尝试设置gradle以启用各种spring配置文件来启动该过程。 我当前的配置如下: 我想通过任务设置系统属性,然后执行。 我的尝试看起来像这样: 几个问题: 是spring boot bootRun配置的一部分? 是否可以在另一个任务中设置系统属性? 我下一步应该做什么?我需要先进行配置 我还有其他方法可以研究吗 -埃里克 问题答案: 最简单的方法是定义默认值并允许其被覆盖。我

  • 我在build.gradle中创建了一个新的gradle任务: 哪个应该运行rerun.sh: 我使用IntelliJ作为IDE。如何运行此任务? 我尝试在zshell控制台中运行并收到此错误: gradle调用CL zsh:找不到命令:gradle 但是在 IDE 中,我一直使用 gradle,因此必须安装它。 我怎么才能解决这个问题?我的写作还好吗?

  • 我试图设置gradle,在启用各种spring配置文件的情况下启动bootRun进程。 我当前的配置如下所示: 我想用gradle任务设置系统属性,然后执行bootRun。 我的尝试是这样的: 几个问题: 系统属性是spring boot bootRun配置的一部分吗 可以在另一个任务中设置系统属性吗 我的下一步应该是什么?我需要在bootRun之前进行配置 有没有其他方法值得我研究 -埃里克

  • 我有一个结构如下的项目: Maven-as-submodule-只是一个分级项目;graph-gen是gradle项目中的Maven模块(不是子模块) 我的目标是从gradle任务运行command:。所以我写了一些: null 任务runMvnInterfaceGenerator(类型:Exec){dependsOn“copy graphstoGenerator”workingDir“./gra

  • 我尝试用JavaExec类型创建gradle任务。在gradle文档中,我发现我不需要使用java插件。但是这个插件与android插件不兼容。如果我没有应用java插件,我会收到以下错误: 错误:无法找到或加载主类包。TestM 我的任务示例: 如果使用相同的任务创建java库模块,则会收到相同的错误: 错误:无法找到或加载主类 也许我需要设置类路径变量?如何在Android Studio中获取

  • 我在跑Pop_OS!20.10 [✓] Flutter(Channel stable,1.22.3,Linux,locale en_US.UTF-8)•Flutter版本1.22.3 at/home/samdc/DevTools/Flutter•框架版本8874f21(3个月前),2020-10-29 14:14:35-0700•引擎版本a1440ca392•Dart版本2.10.3•Pub下载镜