网站首页 > 开源技术 正文
我之前在eclipse上,idea上运行过testng的几个版本,最近一段时间没有使用。今天在一台新电脑的idea用了下testng框架,写了一个方法的demo,运行时遇到了问题,错误提示如下:
org.testng.TestNGException:
TestNG by default disables loading DTD from unsecured Urls. If you need to explicitly load the DTD from a http url, please do so by using the JVM argument [-Dtestng.dtd.http=true]
大致的意思是加载了不安全的dtd导致断开,若要坚持运行可以加jvm的参数来解决。
在网上搜了下相关的内容,基本上都是回答要降低版本。确实,我之前运行都是没问题的,最近也没使用testng框架,也没留意版本,今天的问题是使用testng新版本7.3.0出现的,所以降低版本肯定是一个解决方案,那不降低版本是否可以解决呢,请往下看文章。
今天就试试运行提示里的给jvm加参数是否可行,记录如下。
我的IDE是idea,给testng的模板加jvm参数的路径是“Run--> Edit configuration --> template --> testng”,如图
然后重新运行报错的方法,奇怪,怎么还是报错,难道提示给的解决方法无效?
再次进入testng的模板设置才发现,左侧菜单栏还有一个testng及运行方法菜单,但这个方法的jvm是没有参数的,就是说,运行过后已经应用了模板,就不再重新应用了。问题清楚了,解决就简单了,把这个测试方法删除再次运行让它重新应用带jvm参数的模板或者在这个已经应用完的模板方法里在加一次jvm参数,两个方法都试了下,都是ok的。见图
由于已经修改好了模板,后续再加新的测试方法,就不会报错了。
其实问题到这里就都解决完了,但比较奇怪为什么新版本就认为加载的dtd不安全了呢,那是不是加https就能解决呢。dtd是对项目xml的描述规范,我的项目testng.xml是用插件生成的,然后进入testng.xml里面发现dtd链接真的是http,而不是https,改为https,把之前方法的jvm参数去掉,然后运行testng.xml。ok,确实也是不报错了。我到testng的官网查了下,给的testng的示例确实也是https的。见图
到这该结束了吧。错!文章没有结束,由于我刚才的试验是去掉了testng模板上jvm参数的,尽管运行testng.xml成功了,但单独运行测试方法又开始报不安全的错误了,意味着单独运行测试方法是不走testng.xml里定义的dtd的。
咱们先看看新版本的源码为什么一直报不安全,我从报错提示进入源码TestNGContentHandler.java文件中,位置如图
分别进入方法,发现原来是有个判断,当协议等于http时,直接返回不安全链接的异常信息。
那就是说,单独运行一个测试方法,也是有一步取dtd的url的,那这个url不是取testng.xml里定义的,那是取哪里呢。
我又到IDE的引用dtd定义的地方看了看,路径:File–>Settings–>Languages & Frameworks–>Schemas and DTDs
在这里也是没有找到和dtd默认定义相关的内容。最终我也是没找到运行单独的一个测试方法到底是去哪里引用的dtd,猜测是IDE里默认访问dtd时并没有展示配置的地方,我单位用的是idea2018运行testng7.3.0时发生的报错问题,我家里用的idea是2020版本,在使用idea2020版本里,同样引用testng7.3.0,直接运行单个测试方法时就不再报dtd不安全的错误了,可能是新版本的IDE工具里默认访问dtd都用了https吧。文章到这里就结束了,通过这些问题的排查操作过程,个人感觉也是收获满满。
总结下:
1、新版本的testng源码中加入了dtd协议判断,使用http访问dtd会有不安全的报错。
2、解决办法按照提示,直接使用jvm加参数能完全解决。
3、testng.xml中的dtd修改为https协议,只能解决使用testng.xm来运行用例,用新版本的IDE工具可以兼容单独运行测试方法报错问题。
猜你喜欢
- 2024-10-05 测试开发 | 使用Extent report美化单元测试框架TestNG的报告
- 2024-10-05 Jenkins + TestNG 实现自助式自动化测试平台
- 2024-10-05 TestNg 失败自动重试(test connection错误怎么办)
- 2024-10-05 干货!详解自动化测试用例设计与管理的通用策略(基于TestNg)
- 2024-10-05 Allure+TestNG打造完美的自动化测试报告
- 2024-10-05 Java老矣,Java正年轻!一文了解Java接口自动化测试框架TestNg
- 2024-10-05 十分钟上手TestNg(十分钟上手辩论)
- 2024-10-05 资深测试必备技能!TestNG自动化测试框架实战详解
- 2024-10-05 利器 | TestNG 与 Junit 对比,测试框架如何选择?
- 2024-06-27 HttpClient +Testng进行接口测试入门
你 发表评论:
欢迎- 05-15.net core集成vue
- 05-15Vue开发环境搭建
- 05-15创建Electron工程
- 05-15个人博客搭建保姆级教程3——hexo
- 05-15(实用派)Express之创建并配置运行vue项目
- 05-15package.json 与 package-lock.json 的关系
- 05-15deepin-linux的vue学习(二)git克隆开源vue项目和本地运行
- 05-15手把手教你搭建免费个人博客网站
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)