我正在为JMeter创建自定义采样器。我可以将我的jar导入库中,采样器在GUI中可见,但字段显示不正确。
这是我的代码。
Custom.java
public class Custom extends AbstractSampler implements TestBean {
private String email = "";
public Custom() {
super();
}
public SampleResult sample(Entry entry) {
SampleResult res = new SampleResult();
res.setSampleLabel(getName());
res.setResponseData(("Hello " + getEmail()).getBytes());
res.setSuccessful(Boolean.TRUE);
return res;
}
public void setEmail(String email){ this.email = email; }
public String getEmail(){ return email; }
}
CustomBeanInfo.java
public class CustomBeanInfo extends BeanInfoSupport {
protected CustomBeanInfo() {
super(Custom.class);
createPropertyGroup("contact", new String[]{
"email"
});
PropertyDescriptor p = property("email");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "asd");
}
}
CustomResources.properties
displayName=Custom Sampler
email.displayName=Email Address
email.shortDescription=User Email Address
contact.displayName=Contact
这就是它在JMeter GUI中的外观。我的猜测是属性文件没有正确附加到采样器或者没有执行构造函数。
编辑1 :添加了pom.xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.jmeter</groupId>
<artifactId>custom-sampler</artifactId>
<version>0.2.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>2.10</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
EDIT 2 :使用sampler(将其添加到线程组)时,日志中会出现以下错误
2016/03/25 09:28:23 WARN - jmeter.testbeans.gui.GenericTestBeanCustomizer: org.apache.jmeter.protocol.java.sampler.Custom#email(java.lang.String) does not appear to have been configured
答案 0 :(得分:0)
修改:可能错了。见评论。
我认为你只是错误地命名了属性文件。 JavaDoc for BeanInfoSupport读取:
即使在任何此类修改之前,也会命名一个资源包 xxxResources(其中xxx是完全限定的 bean类名称)将 如果可以获得并用于本地化以下内容:
它表示文件名必须是完全限定的。挖掘源代码的例子我找不到一个好的,但我找到了这个文件,notes_on_extending.txt:
- 选择一个包并制作三个文件:
醇>
- [ComponentName] .java(org.apache.jmeter.config.CSVDataSet.java)
- [ComponentName] BeanInfo.java(org.apache.jmeter.config.CSVDataSetBeanInfo.java)
- [ComponentName] Resources.properties(org.apache.jmeter.config.CSVDataSetResources.properties)
我认为您的属性文件必须命名为org.apache.jmeter.custom.CustomResources.properties
。
答案 1 :(得分:0)
我有同样的问题。我解决了将* Resource.properties放在同一个BeanInfo.java包中
IE:
src
|-main
|-java
|-org.apache.jmeter.custom
|-Custom.java
|-CustomBeanInfo.java
|-CustomResource.properties
进行此测试:使用winrar(或其他工具)打开jar并移动属性文件
注意:当您构建项目时,资源不会放入java包中,例如在maven中您必须指定保存在包中的文件