JMeter插件 - 如何收听TestState

时间:2016-01-31 04:35:47

标签: jmeter

我正在开发一个JMeter插件。我正在尝试创建一个能够监视当前测试状态的AbstractVisualizer。但是,实现TestStateListener似乎并没有起作用。

我通过创建一个基本监听器来测试它,该监听器具有向JMeter的日志记录控制台输出任意信息的登录。通过“添加”功能发送样本时,会向控制台发送一行。但是在各种TestState函数上都没有触发任何东西。我是否缺少更具结构性的东西?

public class TestListener extends AbstractVisualizer
implements TestStateListener
{
    private static final Logger log = LoggingManager.getLoggerForClass(); 
    @Override
    public void add(SampleResult arg0) {
        log.info("add");
    }

    @Override
    public void clearData() {
    // TODO Auto-generated method stub      
    }

    @Override
    public String getStaticLabel()
    {
        return "Test Listener";
    }

    @Override
    public String getLabelResource() {
        return null;    
    }

    @Override
    public void testEnded() {
        log.info("Test Ended");     
    }

    @Override
    public void testEnded(String arg0) {
        log.info("Test Ended");     
    }

    @Override
    public void testStarted() {
        log.info("Test started");       
    }

    @Override
    public void testStarted(String arg0) {
        log.info("Test started");       
    }           

}

1 个答案:

答案 0 :(得分:0)

我不确定如何在一堂课中完成。我有2个班级:

用户界面:

public class MonitorGui extends AbstractListenerGui
{
    // ...
    @Override
    public TestElement createTestElement() 
    {
        TestElement element = new Monitor();// <-- this is the backend
        modifyTestElement(element);
        return element;
    }
    // ...
}

然后后端就是这样:

public class Monitor extends AbstractListenerElement 
                     implements SampleListener, 
                                Clearable, Serializable,
                                TestStateListener, Remoteable,
                                NoThreadClone
{
    private static final String TEST_IS_LOCAL = "*local*";
    // ...
    @Override
    public void testStarted() 
    {
        testStarted(TEST_IS_LOCAL);
    }

    @Override
    public void testEnded() 
    {
        testEnded(TEST_IS_LOCAL);
    }

    @Override
    public void testStarted(String host) 
    {
         // ...
    }
    // ...
}

您可能不需要像我一样实施SampleListener,但可能其他方面非常相似。

我基于内置的ResultSaverGuiResultCollector对构建了该实现,这些组件将结果保存到Simple Data Writer,Summary Report等文件中。