JMeter JunitSampler 无法找到带有字符串参数的构造函数

Posted

技术标签:

【中文标题】JMeter JunitSampler 无法找到带有字符串参数的构造函数【英文标题】:JMeter JunitSampler unable to find constructer with string parameter 【发布时间】:2016-09-15 05:06:06 【问题描述】:

我正在对命令行工具进行性能测试。我已经使用 Junit 编写了一个集成测试,用于测试整个命令行工具,我想重用它来监控性能。

我正在使用 JUnit Request Sampler,但由于错误而无法开始测试。

2016/05/18 16:22:36 INFO - jmeter.protocol.java.sampler.JUnitSampler: Trying to find constructor with one String parameter returned error: org.someorg.integration.IntegrationTest.<init>(java.lang.String)

我看到了this,但我的测试中没有设置或拆解。想我可能会错过什么?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。我用两个构造函数解决了它:

标准空一号 一个“假”的人接受一个字符串,调用另一个人

像这样:

public MyTestClass() 
   // Do nothing


public MyTestClass(String test) 
  this();
 

JMeter 在此之后不再抱怨。有点奇怪,但如果它有效...... 作为副作用,测试将不再在 eclipse 中运行,所以我创建了两个版本的测试类:

Eclipse 一个 一个用于 JMeter 的 JAR

【讨论】:

【参考方案2】:

根据How to Use JUnit With JMeter 指南:

构造函数字符串标签

如果您的 JUnit 测试类有一个接受单个字符串的构造函数,则可以使用此参数设置其值。如果您的 JUnit 测试类没有声明这样的构造函数,JUnit 示例将尝试寻找一个空的构造函数。

所以你有两个选择:

    您的 JUnit 类应该有带有 1 java.lang.String parameter 的构造函数 您的 JUnit 类应该有空的构造函数

如果满足上述条件之一 - JMeter 将能够运行您的课程。

请参阅Providing Constructors for Your Classes 指南以了解“构造函数”位的说明。

【讨论】:

在开始之前我确实查看了您的博客。不幸的是,一个空的构造函数仍然不起作用。我创建了一个 github 存储库来演示相同的 here 我仍然收到错误消息 2016/05/19 11:20:53 INFO - jmeter.protocol.java.sampler.JUnitSampler: Trying to find constructor with one String parameter returned error: org.something.MainTest.<init>(java.lang.String) 只有一个空的构造函数,它可以从命令行运行,但不能从 JMeter UI 运行【参考方案3】:

我遇到了同样的问题,在尝试了许多解决方案后,一切都没有奏效。在为 JUnit 采样器提供唯一名称后,事情开始起作用了。我有 100 个 JUnit 采样器,在对采样器使用唯一名称后没有造成任何问题。

您不必将构造函数添加到您的 Test 类。为采样器提供唯一名称就足够了。

【讨论】:

以上是关于JMeter JunitSampler 无法找到带有字符串参数的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

1分钟带你秒懂自动化测试和Appium,Selenium,Jmeter,Dragon testing等一系列自动化测试工具

Jmeter 老司机带你一小时学会Jmeter

JMeter 3.2运行报Keytool异常的问题

零基础带你入门JMeter-模拟高并发接口测试,小白教程!

Jmeter接口测试:带参数带token

Jmeter测试带加密参数的接口