2017-09-01 91 views
0

我有测试REST API的JMeter脚本。从控制台执行脚本后,不会调用tearDown()

它配置了Junit Request

enter image description here

在测试过程中,我张贴了很多项目。我想在测试执行后清理数据库。我给tearDown()添加了适当的逻辑。

但是,我发现从控制台执行不会调用teaDown()

从UI启动工作正常。

这里是tearDown()实现:

@AfterClass 
public static void tearDown() throws Exception { 
    LOG.info("tearDown() called"); 
    deleteRecordingsFromDb(); 

    SCHEDULED_EXECUTOR_SERVICE.shutdown(); 
    if (client != null && !client.isClosed()) { 
     client.close(); 
    } 
    minClient = null; 
} 

而且,要知道,Throughput Shaping Timer使用。并且参数通过-Jload-profiles="..."

如何从控制台中执行tearDown()可执行文件?

+0

你如何通过控制台运行?并且拆卸决不会使用命令行来执行? – nullpointer

+0

它可能听起来微不足道,甚至有点愚蠢 - 但是您确定在GUI模式下在相同的JMeter实例上运行非GUI中的测试吗? –

+0

@Yuri我绝对确定它.JMeter是完全一样的。项目打包到一个胖罐子并加载到'/ jmeter-home/lib/ext/junit'。但是,在UI模式下,我运行时没有定时器。我正在使用循环计数器。 –

回答

0

我认为你正在做一些错误:

  • 你想打电话给你使用@AfterClass进行标注的方法,但你没有与@Test注释的方法。所以JMeter甚至不会发现你的方法。

  • JMeter会自动调用安装(@BeforeClass)和tearDown(@AfterClass),除非你取消他们

所以,如果你想清理与@Test注释的方法的执行中的方法对于整个测试,只需将代码放入使用Groovy代码的常规JSR223采样器中即可,无需JUnit请求。

请参见:

+0

屏幕截图仅包含拆解线程组。当然套件有一堆测试,和setUp()。问题是我拥有所有的东西,比如BeforeClass,AfterClass和Test。我在日志看到设置Up()被调用,而tearDown()被跳过。 –

+0

你好,我的回答在你的评论后仍然有效 –

+0

我会在星期一试一试,并让你知道结果。我想添加一个'setUp()'我用于初始化并发队列时发布新的项目,他们也存储在一个队列中。当“tearDown”被调用时,我正在经历所有队列并删除它们。用你的变体,它不会那么容易。 –