我需要使用Jmeter
中的Java
来测试网络服务方法的效果,我发现Jmeter
API提供StandardJMeterEngine
类来运行Jmeter
的测试方法1}},并使用" String
":
public class JMeterTestFromCode {
public static void main(String[] args) {
// Engine
StandardJMeterEngine jm = new StandardJMeterEngine();
// jmeter.properties
JMeterUtils.loadJMeterProperties("c:/tmp/jmeter.properties");
HashTree hashTree = new HashTree();
// HTTP Sampler
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("www.google.com");
httpSampler.setPort(80);
httpSampler.setPath("/");
httpSampler.setMethod("GET");
// Loop Controller
TestElement loopCtrl = new LoopController();
((LoopController) loopCtrl).setLoops(1);
((LoopController) loopCtrl).addTestElement(httpSampler);
((LoopController) loopCtrl).setFirst(true);
// Thread Group
SetupThreadGroup threadGroup = new SetupThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController((LoopController) loopCtrl);
// Test plan
TestPlan testPlan = new TestPlan("MY TEST PLAN");
hashTree.add("testPlan", testPlan);
hashTree.add("loopCtrl", loopCtrl);
hashTree.add("threadGroup", threadGroup);
hashTree.add("httpSampler", httpSampler);
jm.configure(hashTree);
jm.run();
}
}
我的问题是我使用EJB的Web服务,这个Web服务使用自定义参数(bean对象),在我如何运行Soap之后:
String ENDPOINT_ADDRESS = "http://server:8080/server-ejb/MyServiceClass?wsdl";
QName SERVICE_DATA_FINDER = new QName(
"http://test.service.com/", "MyServiceClass");
javax.xml.ws.Service service;
service = javax.xml.ws.Service.create(
new URL(ENDPOINT_ADDRESS), SERVICE_DATA_FINDER);
IMyServiceClass finder = service.getPort(IMyServiceClass.class);
MyBean bean = new MyBean();
// bean.set...
// bean.set...
finder.myMethod("foo", bean);
目标是创建一个Maven项目,为Web服务+检索测试结果提供自动化性能测试(这就是我需要使用Java在Jmeter中实现WS测试的原因)
如何使用StandardJMeterEngine或其他API测试我的Web服务?
提前致谢!
答案 0 :(得分:0)
是否有任何特定原因可以从Java代码测试您的服务? JMeter为基于XML的Web服务测试提供了SOAP/XML-RPC Request采样器,这是一个更真实的用例。
有关详细信息,请参阅Testing SOAP/REST Web Services Using JMeter指南。
但是,如果必须从Java代码测试Web服务,则只需将包含IMyServiceClass
和依赖项的jar添加到JMeter的CLASSPATH。