正如我在问题中所说,是否可以将jmeter变量(通过-J)传递给JUnit Request
,以便它可以在内部用于junit测试?
这听起来可行,因为the Apache Junit Request docs表示:
... JMeter目前直接运行测试方法,而不是 把它留给JUnit。 ...
这表明jmeter可以控制传递参数,但我没有找到支持文档,并且没有通过JUnit Request sampler配置的明显机制。
背景
我希望使用CSV Data Set Config
来加载用户池(如Victor Klepikovskiy excellent top tips中所示)并将随机获取的用户提供给我的单元测试(用于跨线程/循环)。我找到了另一种方法来做我想做的事情(但是使用我自己的用户池,在junit测试中访问)。我知道您也可以通过Http Request
管理登录(如上所述),但我们将内部的rest-service调用管理到junit,以便它们也可以作为junit测试运行。我感兴趣的是尽可能不侵入。
这样做的第二个原因可能是使用单个junit测试方法,但将其参数化以适应该场景。
附录
对于它的价值,我对目前的替代方法感到满意,但仍然对如何能够做到这一点以备将来参考感兴趣。我对jmeter很新,但希望能看到更多。还在考虑查看预处理器,但不确定这些是如何与Junit请求进行交互的。
答案 0 :(得分:1)
我试图做你正在做的事情(虽然,从未特别使用-J)。 简短的回答是我还没有找到一种方法使它能够将变量传递给JUnit请求。我相信它目前不受支持。
当时,我看到这样做的唯一方法是将参数(例如, $ {__ threadNum} 或甚至从 CSV数据集配置)传递到构造函数字符串标签并正确编写我的构造函数。但是,我只得到字符串文字“ $ {__ threadNum} ”。我联系过支持,他们向我提到这不起作用。我忘了他们说的话,找不到电子邮件。但主要思想是在解析 Conostructor String Label 中的参数之前实例化或创建JUnit请求。这就是为什么它不起作用的原因。
我目前正在使用与文件中的测试读取凭据相同的替代方法。
答案 1 :(得分:1)
我测试过,一切正常。需要做的是: 来源:blazemeter.com how-use-junit-jmeter
1)在项目库中添加以下jar文件:
.. \ JMeter的\ Apache的JMeter的-3.0 \ lib中\分机\ ApacheJMeter_core.jar
.. \ JMeter的\ Apache的JMeter的-3.0 \ lib中\分机\ ApacheJMeter_junit.jar
2)在课堂上,添加对采样器的引用:
import org.apache.jmeter.protocol.java.sampler.JUnitSampler;
3)在@Test标签中添加代码来处理变量: Click to see Code
4)在JMeter中定义变量(用户定义变量和CSV)
希望它有所帮助!