Я пытаюсь создать файл JMX jMeter, используя Kotlin и новые функции jMeter из версии 5.6.
Но когда я пытаюсь создать TestPlan, например:
const val GUI_CLASS_VAL = "guiclass"
fun main() {
// Initialize JMeter engine
val jmeterHome = File("Apps/apache-jmeter-5.6.3")
val jmeterProperties = File(jmeterHome, "bin/jmeter.properties")
JMeterUtils.setJMeterHome(jmeterHome.path)
JMeterUtils.loadJMeterProperties(jmeterProperties.path)
JMeterUtils.initLocale()
...
// Test Plan
val testPlan = TestPlan("Test Plan")
// Test Plan HashTree
val testPlanTree = ListedHashTree()
testPlanTree.add(testPlan)
...
// Save to JMX
SaveService.saveTree(testPlanTree, FileOutputStream("test_plan.jmx"))
}
он генерирует что-то вроде
<?xml version = "1.0" encoding = "UTF-8"?>
<jmeterTestPlan version = "1.2" properties = "5.0" jmeter = "5.6.3">
<hashTree>
<TestPlan testname = "Test Plan">
но этот файл нельзя импортировать в jMeter
Problem loading XML from:'somePath/test_plan.jmx'.
Cause:
IllegalArgumentException: guiclass attribute is not found
потому что это должно выглядеть так:
<TestPlan guiclass = "TestPlanGui" testclass = "TestPlan" testname = "Test Plan">
Я пробовал все, что угодно, например testPlan.addParameter(GUI_CLASS_VAL, «TestPlanGui») или testPlan.setProperty(GUI_CLASS_VAL, «TestPlanGui»), но ничего из этого не помогло.
Есть ли способ заставить генератор правильно включать эти свойства во все элементы?
Что вы подразумеваете под «JMeter не генерирует», это вы должны предоставить соответствующие значения для свойств TEST_CLASS и GUI_CLASS
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
В противном случае вы можете использовать действие контекстного меню «Копировать код», оно устанавливает правильное значение GUI_CLASS.
Больше информации:
Большое спасибо. Эти две строки — это именно то, что я искал testPlan.setProperty(TestElement.TEST_CLASS, TestPlan::class.java.name) testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui::class.java.name) теперь работает отлично.