通过罗马依赖和Cobertura-Maven-Plugin防止“Maven网站”目标中的测试错误
-
02-01-2020 - |
题
在基于Maven的项目中,一些JUnit测试失败,但只在Maven网站构建期间。执行
时mvn clean package
.
所有测试通过。但是在执行时:
mvn clean site
.
一些测试生成消息:
无法初始化类org.jdom2.input.sax.xmlReaders
这些错误发生在使用罗马以解析RSS数据的类中。为此,该项目对罗马(COM.Rometools:罗马:1.5.0)有依赖性,它本身就具有关于JDOM 2.0.2的依赖。
当罗马依赖项尚未包含在项目中时,不会发生错误。
Maven Site配置包括Cobertura-Maven-Plugin。这也有于JDom的依赖,通过Jaxen:Jaxen:Jaxen:1.0 - > JDom:JDom:1.0
我认为在执行网站目标时,JDO 1.0版本被测试的类使用,导致罗马库库中的错误,因为它使用了不正确的JDom版本。
我不知道如何在Cobertura插件中配置项目以使用JDom 1.0。有谁知道这种方法,并使测试在网站目标期间运行成功?
解决方案
通过在程序启动期间设置系统值来解决问题:
System.setProperty("javax.xml.parsers.SAXParserFactory",
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
.
不隶属于 StackOverflow