首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java向HashTree添加断言模块

用Java向HashTree添加断言模块
EN

Stack Overflow用户
提问于 2019-10-22 12:58:10
回答 1查看 159关注 0票数 1

编辑

我的测试脚本的特点如下:

代码语言:javascript
复制
- test plan
  - thread group 1
    - http sampler 1-1

  - thread group 2
    - http sampler 2-1
- thread group 1
    - http sampler 1-1

  - thread group 3
    - http sampler 3-1

我可以遍历所有的线程组。但是,我不能使用类似的模式来遍历http采样器。

这是我的代码:

代码语言:javascript
复制
public static void main(String[] args) throws IOException {
        // LOAD EXITISTING JMETER XML
        JmxReader jmxReader = new JmxReader(".\\resources\\manually-configure.jmx");
        HashTree testPlanTree = jmxReader.getTree();

        SearchByClass testPlanSearcher = new SearchByClass(TestPlan.class);
        SearchByClass threadGroupSearcher = new SearchByClass(ThreadGroup.class);
        SearchByClass httpSamplerSearcher = new SearchByClass(HTTPSampler.class);
        testPlanTree.traverse(testPlanSearcher);
        Iterator testPlanIter = testPlanSearcher.getSearchResults().iterator();

        while (testPlanIter.hasNext()) { // This loop will only execute once, due to we only have one test plan
            TestPlan testPlan = (TestPlan) testPlanIter.next();
            HashTree subTreeOfTestPlan = testPlanSearcher.getSubTree(testPlan);
            subTreeOfTestPlan.traverse(threadGroupSearcher);
            Iterator threadGroupIter = threadGroupSearcher.getSearchResults().iterator();
            while(threadGroupIter.hasNext()) {
                ThreadGroup threadGroup = (ThreadGroup) threadGroupIter.next();
                HashTree subTreeOfThreadGroup = threadGroupSearcher.getSubTree(threadGroup);
                subTreeOfThreadGroup.traverse(httpSamplerSearcher);
                Iterator httpSamplerIter = httpSamplerSearcher.getSearchResults().iterator();

                while (httpSamplerIter.hasNext()) {
                    httpSamplerIter.next();
                    System.out.println("I found a http sampler"); \\ ??? Nothing got printed
                }
            }
         }
    }

用于遍历http smaplers的第三个内循环不执行。但是,每个线程组中至少有一个取样器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 13:52:45

基本上,您需要实例化ResponseAssertion并将其添加到任何需要的位置,例如,将其添加到测试计划的根中:

代码语言:javascript
复制
testPlanTree = SaveService.loadTree(in);

ResponseAssertion responseAssertion = new ResponseAssertion();
responseAssertion.setName("Response Assertion");
//configure the assertion according to your requirements
responseAssertion.setProperty(TestElement.TEST_CLASS, ResponseAssertion.class.getName());
responseAssertion.setProperty(TestElement.GUI_CLASS, AssertionGui.class.getName());

testPlanTree.add(responseAssertion);

SaveService.saveTree(testPlanTree, new FileOutputStream("/path/to/script/with/assertion.jmx"));

更多信息:不使用JMeter GUI启动JMeter测试的五种方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58504877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档