我在我的应用程序中使用 Xalan,但需要使用 Saxon 和参考实现来生成测试输出以进行比较。我想在单元测试期间同时使用它们。但是,一旦我在项目 .pom 中添加对 Saxon 的依赖项,应用程序似乎在测试期间将 Saxon 用于所有 xslt 和 XPath 操作:
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>9.4</version>
<scope>test</scope>
</dependency>
由于不同的 XPath 行为,这会导致主应用程序在生成输出时失败。在测试范围之外运行主应用程序时,它可以工作。
如何在测试期间使用 Xalan 运行主应用程序,但使用 Saxon 运行测试?
在运行 Xalan 和 Saxon 部件之前,我尝试设置以下属性:
System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl ");
System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");
我还尝试将 Xalan 和 Saxon 部分放在不同的项目中,我还尝试在第三个项目中使用它们,结果相同。