如何在Linux上运行OSS Hibernqte Validator测试

问题描述 投票:0回答:1

我开始摆弄Hibernate Validator,OSS项目,以便稍后分叉它。但我无法在本地运行测试。我遵循了 Contributing to Hibernate Validator 的官方文档,其中有一个 Building from Source 的部分。

那么为什么要问SO呢?

我已经对此议论了几个月了,上周末,一位朋友决定调查一下。最初,就像在我的电脑上一样,它失败了。但他检查了

8.0.1.Final
标签,结果成功了。

昨晚很晚,我尝试了一下,但失败了。碰巧的是:

  • 他在 Windows 上使用 Oracle 的 JDK 17,而我在 Ubuntu 22.04 上使用 Oracle JDK 17
  • 之前,我使用 Graal VM for JDK 19、OpenLogic 的 JDK 17 都失败了
  • 他在 Maven
    3.9.3
    ,我尝试过
    3.9.0
    &
    3.9.4

一些模块测试通过了 Maven

3.9.4
和 Oracle 的 JDK 17:

Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /home/salathiel/.local/bin/maven
Java version: 17.0.8, vendor: Oracle Corporation, runtime: /home/salathiel/.local/opt/jdk-17.0.8
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "6.2.0-26-generic", arch: "amd64", family: "unix"

个人感想

我不认为像 Hibernate 这样的 Java 项目只能在 Windows 上开发,也不能使用特定的 JDK 版本/版本进行编译。我一定错过了一些基本的东西。

抱怨够了

我担心两个奇怪的异常:

  • 未找到类定义
  • Java安全异常

这是堆栈跟踪:

[INFO] Running TestSuite
[ERROR] Tests run: 982, Failures: 963, Errors: 0, Skipped: 0, Time elapsed: 24.262 s <<< FAILURE! - in TestSuite
[ERROR] testUnknownProviderConfiguredInValidationXml(org.hibernate.beanvalidation.tck.tests.bootstrap.customprovider.BootstrapNonAvailableValidationProviderTest)  Time elapsed: 0.037 s  <<< FAILURE!
org.testng.TestException: 

Expected exception of type class jakarta.validation.ValidationException but got java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
    at org.hibernate.beanvalidation.tck.tests.bootstrap.customprovider.BootstrapNonAvailableValidationProviderTest.testUnknownProviderConfiguredInValidationXml(BootstrapNonAvailableValidationProviderTest.java:58)

[...]

Expected exception of type class jakarta.validation.ValidationException but got java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")
    at org.hibernate.beanvalidation.tck.tests.xmlconfiguration.versioning.UnknownVersionInValidationXmlTest.testValidationXmlWithUnknownSchemaVersion(UnknownVersionInValidationXmlTest.java:43)

[...]

[INFO] 
[ERROR] Tests run: 982, Failures: 963, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
java maven unit-testing testing hibernate-validator
1个回答
0
投票

Maven 围绕可组合的 goals 展开(例如:

test
目标由
compile
目标组成,
install
test
分别也是如此)。

据我所知,

install
目标将是
test
compile
package
copy artifact to local repository

为了避免后者的副作用(污染我的本地存储库,因为它是跨项目共享的),我一直在做

mvn clean test
...直到今天早上:

# More tests passed with this
mvn clean install

hibernate-validator-distribution
然后失败了:

hibernate-validator-distribution:生成 Javadoc 报告时发生错误:无法找到 javadoc 命令:环境变量 JAVA_HOME 未正确设置。

我的

~/.bashrc
~/.ondirrc 中都有 JAVA_HOME="...",但修复方法是:

export JAVA_HOME="$JAVA_HOME"

自我提醒:我想我不知道我不知道的事情。

© www.soinside.com 2019 - 2024. All rights reserved.