JMeterEngine會驅動JMeter ThreadGroup啓動Test Threads 執行測試,其自己也是一個Runnable,這裏把測試驅動(JUnit或者其餘相似main之類的)看做主線程(main thread)的話, JMeterEngine做爲第一層子線程(First Child Thread),因此若是項目代碼基於不少模塊(好比基於OSGI),須要進行ClassLoader調整的話能夠重寫JMeterEngine的runTest方法,例如.:ide
public void runTest() throws JMeterEngineException { try { tcClassloader = Thread.currentThread().getContextClassLoader(); Future<?> f = DefaultExecutorService.getInstance().submit(this); f.get(); } catch (Exception err) { stopTest(); throw new JMeterEngineException(err); } finally { } } @Override public void run() { ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(tcClassloader); try { super.run(); } finally { Thread.currentThread().setContextClassLoader(oldCl); } }