JMeterEngine会驱动JMeter ThreadGroup启动Test Threads 执行测试,其本身也是一个Runnable,这里把测试驱动(JUnit或者其他类似main之类的)看作主线程(main thread)的话, JMeterEngine作为第一层子线程(First Child Thread),所以如果项目代码基于很多模块(比如基于OSGI),需要进行ClassLoader调整的话可以重写JMeterEngine的runTest方法,例如.:
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); } }
本文探讨了JMeterEngine如何驱动JMeterThreadGroup执行测试,解释了其作为Runnable的运作机制,并提供了重写runTest方法以调整ClassLoader的示例代码,适用于基于OSGI等模块化的项目。

1279

被折叠的 条评论
为什么被折叠?



