TestNG @Listener(自定义监听)多线程下没有完全执行

自定义监听定义了下载swagger json文件,当多个test class 在一个xml配置里启用 classes并发时,
监听内的下载json文件没有执行,导致所有测试类找不到指定的json文件。
testng的bug?

答案来了--监听使用错误导致

经过试验和查阅testng官网对监听器的说明
onStart接口再一个testng运行期内只运行一次,运行在main线程中,所以,在里面定义的通过类名映射json文件的下载方法多线程同时启动不同测试类就失效了。

如何解决

  1. 目前想到的方案是可以将定义写在BeforeClass中,然后定义一个测试祖先类,仅为了下载json文件用

已经试验过,通过继承测试祖先类,实际运行的测试类获取到的 this.getClass()是真实运行的测试类。
通过这个方法,获取到真实测试类的类名,然后再通过映射json文件名称和接口路径实现下载Json文件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容