簡體   English   中英

如何在沒有 maven 和 gradle 的情況下從 java 代碼運行加特林模擬?

[英]How to run a Gatling simulation from java code without maven and gradle?

我想從 Java 代碼中執行我的加特林模擬,而不是使用命令 maven 或 gradle。 是否可以直接從 Java 代碼運行測試/場景?

選項1:

如果你想從代碼中運行 Gatling,你可以調用這個 class:

io.gatling.app.Gatling

源代碼:

https://github.com/gatling/gatling/blob/master/gatling-app/src/main/scala/io/gatling/app/Gatling.scala

我可能不會直接調用main ,而是像這樣調用start function 或自定義 start function 。 這是一個嘗試or

像這樣的東西(從上面的鏈接復制):

import io.gatling.app.Gatling
import io.gatling.core.config.GatlingPropertiesBuilder

object Engine extends App {

  val props = new GatlingPropertiesBuilder
  props.simulationClass("your.simulation.class.goes.here")
  props.dataDirectory("path.to.data.directory") //optional
  props.resultsDirectory("path.to.results.directory") //optional
  props.bodiesDirectory("path.to.template.directory") //optional
  props.binariesDirectory("path.to.binaries.directory") //optional

  Gatling.fromMap(props.build)
}

選項 2:

(編譯階段)使用 Maven 原型生成幫助程序類(您可能需要編譯您的 Java 無論如何)。 文檔 這將生成Engine ( code ) 和您可以運行的其他類。 這與選項 1 類似,但如果您從 maven 項目工作,則有助於解析路徑。 如果您使用 maven 來構建您的項目,這是有道理的。

選項 3:

使用Runtime.getRuntime().exec()或類似方法從 Java 調用gatling.shgatling.bat作為進程。

記住:

Gatling 測試需要在執行之前進行編譯。 這基本上就是gatling.[sh|bat]正在做的事情:

# Run the compiler
"$JAVA" $COMPILER_OPTS -cp "$COMPILER_CLASSPATH" io.gatling.compiler.ZincCompiler $EXTRA_COMPILER_OPTIONS "$@" 2> /dev/null
# Run Gatling
"$JAVA" $DEFAULT_JAVA_OPTS $JAVA_OPTS -cp "$GATLING_CLASSPATH" io.gatling.app.Gatling "$@"

如果您從 Java 調用 Scala 代碼,則肯定有可用的互操作。 確保 Scala 在您的情況下首先編譯,或者可以輕松加載到 Java CP 中。 如果需要,在 Scala 端創建 Java 友好包裝器。

如果您想要緊密集成,我將從選項 1 或 2 開始,如果您只想將事物粘合在一起並且不介意啟動/初始化時間,則從選項 3 開始。

注意 Gatling 所需的 Classpath - 這將取決於其類的位置(在您的項目中或外部)以及您如何調用它。

您絕對可以通過測試名稱,只需查看 arguments 在這些類中的使用方式。 例如props中的simulationClass 所有可用的方法(simulationsDirectory、simulationClass 等)。

我相信這需要一些試驗和錯誤,但絕對可以做到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM