fitnesse slim 适用于哪个 Java 版本?

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

我很久以前就使用fitnesse,现在我尝试在Windows 11上再次使用它来测试一些java代码。但我遇到了以下问题:

我创建了一个名为 SlimVarDbl 的固定装置,我可以在 itnesse 的文件夹 C:\Users\Cheng\Documents\Proj\VarianceArithemtic\Java 中看到 SlimVarDbl.class 文件。我确信我可以调用 new SlimVarDbl() 来构造一个实例。

所以我创建了一个测试页面,如下所示:

!define TEST_SYSTEM {slim} 
!path C:\Users\Cheng\Documents\Proj\VarianceArithemtic\Java\bin\fitnesse\

!|Slim Var Dbl                        |
|value tolerance|dev tolerance|comment|
|3E-15          |3E-15        |52-bit |

但是当我尝试运行测试时,错误是:

Could not invoke constructor for SlimVarDbl[0]

就好像fitnesse无法识别类文件一样。

fitnesse-standalone.jar 的版本是 v20230503。我当前的java版本是1.8.0_361。

如果我将 java 版本升级到 jdk 20,在尝试测试页面时出现以下错误:

Test system terminated with exception [fitnesse.testsystems.TestExecutionException: java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release]

这是java版本问题还是其他问题?

java fitnesse fitnesse-slim
3个回答
0
投票

错误

Could not invoke constructor for SlimVarDbl[0]
通常是由于Java类是
package
的一部分而引起的。如果 Java 类有
package
定义,您需要在 FitNesse 中定义一个
import
表来指示固定装置类可以来自该包,并且
.class
文件必须放置在“路径”下方的目录结构中,与包装相符。

您可以分享

SlimVarDbl
的源类(开始)吗?


0
投票

这是java版本问题还是其他问题?

是和否。当您尝试使用 JDK 20 时出现的问题是 Java 版本。当您使用 Java 8 时,最初的问题是……其他的问题。

您使用的 Fitnesse 版本取决于已弃用的 SecurityManager 功能。从 Java 18 开始,应用程序只能使用特殊命令行选项运行的功能;请参阅JEP 411:弃用安全管理器以进行删除

如果您想运行该版本的 Fitnesse,建议使用早期版本的 Java。事实上,Fitnesse 下载页面(当前)显示:

FitNesse 需要 Java 运行时环境 (JRE) 版本 8 或 11。

但是,根据 this issues,Fitnesse 似乎可以在 Java 17 (LTS) 上运行,尽管有一些有关安全管理器弃用的日志消息。 Fitnesse 实际上直到 Java 18 才“崩溃”。\


一般来说,除非您需要非 LTS 版本的 Java 的功能。建议坚持使用 LTS Java 版本。非 LTS Java 版本将在发布 6 个月后终止生命! (最新并不总是最好的。)当前 Java 的 LTS 版本是 8、11 和 17。Java 21(将于今年晚些时候发布)预计也将成为 LTS 版本。


0
投票

我在java21上也有同样的错误,仍然没有fitnesse版本可以解决这个问题。以下是其 github 中问题的链接:https://github.com/unclebob/fitnesse/issues/1455

解决方法是将

-Djava.security.manager=allow
添加到启动测试的 java 命令中。

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