自定义监听定义了下载swagger json文件,当多个test class 在一个xml配置里启用 classes并发时,
监听内的下载json文件没有执行,导致所有测试类找不到指定的json文件。
testng的bug?
答案来了--监听使用错误导致
经过试验和查阅testng官网对监听器的说明
onStart接口再一个testng运行期内只运行一次,运行在main线程中,所以,在里面定义的通过类名映射json文件的下载方法多线程同时启动不同测试类就失效了。
如何解决
- 目前想到的方案是可以将定义写在BeforeClass中,然后定义一个测试祖先类,仅为了下载json文件用
已经试验过,通过继承测试祖先类,实际运行的测试类获取到的 this.getClass()是真实运行的测试类。
通过这个方法,获取到真实测试类的类名,然后再通过映射json文件名称和接口路径实现下载Json文件。