2017-09-01 109 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」被調用時,我正在經歷所有隊列並刪除它們。用你的變體,它不會那麼容易。 –