首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TestNG测试外部对象的同步

TestNG测试外部对象的同步
EN

Stack Overflow用户
提问于 2017-01-18 23:49:19
回答 1查看 894关注 0票数 3

简而言之,我的情况是:我想进行并行测试。假设我有4个凭证对和32个测试,它们将在8个并行线程中运行(在并行方法级别上)。因此,我有生产者-消费者的情况,但甲虫之间的平行测试。

我的想法是拥有凭证对象列表(我将在"beforeMethod“阶段对测试线程进行同步)。前4个线程将获得它们的凭据并从列表中删除它们。所有其他线程都会看到空列表并在上面等待。

第一个测试将完成它的执行,并将使用过的凭据添加回"afterMethod“阶段的list中,并在这个列表上调用notify,等等。但问题是,我没有任何合适的地方,我可以定位这个凭据列表+我想使用简单的"mvn测试“来启动这个过程。有什么想法吗?我怎样才能添加这样的同步?如果TestNG中有类似的功能,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 15:13:55

解决了。主要问题是重写TestNG生命周期+保存maven测试管理。因此,我开始挖掘TestNG源代码,并找到了下一个解决方案:

  1. 扩展IExecutionListener,它将将所需数据(队列)存储为公共静态最终成员。
  2. 同一个接口IExecutionListener参与了TestNG生命周期:它有生命周期回调、onExecutionStart和onExecutionFinish。第一个是用来填充来自文件的凭据的队列,第二个是简化GC工作-清理这个队列。
  3. 填充队列在带有@BeforeMethod注释的init方法中使用。注意:不要将队列中的值存储为普通成员,因为您将面临来自不同线程的这个成员的覆盖,这些线程执行来自同一个类的测试,但是不同的测试。使用ThreadLocal提供此变量的线程隔离。
  4. 为我的情况服务的特殊数据结构是BlockingQueue (在LinkedBlockingQueue实现中),并将其作为getter/setter。
  5. 还请不要忘记将自定义侦听器添加到xml中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41731476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档