Jmeter采样器看不到资源文件

时间:2016-03-24 16:35:04

标签: java intellij-idea jmeter

我正在为JMeter创建自定义采样器。我可以将我的jar导入库中,采样器在GUI中可见,但字段显示不正确。

Project structure

这是我的代码。

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中的外观。我的猜测是属性文件没有正确附加到采样器或者没有执行构造函数。

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 

2 个答案:

答案 0 :(得分:0)

修改:可能错了。见评论。

我认为你只是错误地命名了属性文件。 JavaDoc for BeanInfoSupport读取:

  

即使在任何此类修改之前,也会命名一个资源包   xxxResources(其中xxx是完全限定的 bean类名称)将   如果可以获得并用于本地化以下内容:

它表示文件名必须是完全限定的。挖掘源代码的例子我找不到一个好的,但我找到了这个文件,notes_on_extending.txt

  
      
  1. 选择一个包并制作三个文件:      
        
    • [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)
    •   
  2.   

我认为您的属性文件必须命名为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中您必须指定保存在包中的文件