java - 从 Fitnesse 版本 Fitnesse_20070619 升级到最新版本开始出现“无法找到夹具”错误
问题描述
我是 Fitnesse 工具的用户,并在上面编写了许多自动化测试。最近,我收到了一个远程机器(Windows 10 机器,我安装了 Fitnesse)的安全漏洞,它需要我更新我的 Web 服务器。由于该系统上没有安装其他 Web 服务器,我怀疑作为 Fitnesse jar 一部分的嵌入式 Web 服务器需要升级。
因此,我开始寻求升级 Fitnesse 项目以使用最新版本。在我的探索中,我发现我使用的是一个非常旧的 Fitnesse 版本(版本 20070619)。所以,我下载了最新的 Fitnesse-standalone jar(版本 20200501)。所以,我用这个新的替换了现有的 Fitnesse.jar,并重新启动了 Fitnesse 服务器(请注意,我使用的是 Open JDK 8,并且我的路径变量中定义了 jre 8 bin)。这是我用来启动它的命令(就像正在使用的旧 Fitnesse jar 一样):
java -cp fixtures/FitX.jar;fitnesse.jar fitnesse.FitNesse -p 801 -l DailyLogs %1 %2 %3 %4 %5
这里 FitX.jar 是我们为自动化框架编写的一些固定装置,因此我们将其添加到类路径中。这适用于旧版本的 Fitnesse
启动时,它抛出了一个错误,所以我知道我需要使用新的 Main 类定义,所以我再次使用:
java -cp fixtures/FitSabre.jar;fitnesse.jar fitnesseMain.FitNesseMain -p 801 -l DailyLogs %1 %2 %3 %4 %5
请注意,我将 Fitnesse-standalone.jar 重命名为 Fitnesse.jar。这成功地使用新的 Fitnesse jar 启动了服务器,并且我能够使用新的漂亮的 Fitnesse Wiki 页面重新加载我的测试。但是,当我执行测试时,它抛出了这个错误:
set
Could not find fixture: set. %lniata% to %RESPONSE% using row 1 and column 5
这就是我的原始文本的样子:
!!|set|%objSession%|to|%Logincreditial%|使用行|3|和列|2|
整个页面都充满了其他灯具的相同错误。我相信这些是我们在 fitX.jar 中编写的自定义装置。
于是,我开始搜索这个问题,发现我需要在测试的开头添加以下几行:
!define TEST_SYSTEM {slim}
!path C:\FitNesse
其中 C:\FitNesse 是我所有固定装置所在的位置。这是我的 Fitnesse 测试的目录结构:
- C:\FitNesse
- DailyLogs
- fitnesse20200621155541.log
...
- FitNesseRoot
- All my fitnesse tests as folders
- content.txt
- properties.xml
- fixtures
- commons-lang-2.1.jar
- FitX.jar
- log4j.jar
- xml-config.jar
- fitlibrary.jar (seems to be pretty old - just 279 KB file)
- fitnesse.jar (the latest standalone jar version renamed as this)
以下是 FitNesseRoot 中的 content.txt 内容:
!contents
!path classes
!path fitnesse.jar
!path fitlibrary.jar
!path fixtures/FitX.jar
!path fixtures/log4j.jar
!path fixtures/commons-lang-2.1.jar
!path fixtures/xml-config.jar
将更改 (!define TEST_SYSTEM {slim} & !path C:\FitNesse) 添加到我的测试后,这是我在重新执行测试时开始遇到的新错误:
set Could not invoke constructor for set[3] %strTestsessionname2% The instance decisionTable_0. does not exist to The instance decisionTable_0. does not exist Not Provided The instance decisionTable_0. does not exist
所以,我决定在 Fitnesse 的 2007 年到 2020 年之间不进行如此巨大的飞跃,我开始慢慢进步,看看我的 Fitnesse 可以达到的最大版本是多少。在我的研究中,我能够成功地从20070619版本升级到20101101版本,并且我的测试执行得很好。但是,当我发布20110104时,我开始看到上面提到的“无法找到夹具”。因此,我假设自2011 年发布的 Fitnesse 以来,我的测试将面临这个问题,因此我无法使用最新版本的 Fitnesse。
我该如何解决这个问题,以便我可以使用最新版本的功能?
解决方案
找到了我的问题的解决方案。这是编辑模式下的部分fitnesse脚本,它在旧版本而不是新版本中工作:
!!|set|
当切换到新版本的 Fitnesse 时,由于额外的 ! (感叹号)。因此,我将脚本编辑为:
!|set|
在此之后,该页面在最新的 Fitnesse 版本中呈现良好,并且我不再收到“Could Not Find Fixture”错误。
我现在可以使用最新版本的 Fitnesse。
推荐阅读
- javascript - 从 React Hook 复制数组
- google-cloud-platform - 我的虚拟机是否使用 GPU、承诺 GPU 和抢占式 GPU?
- node.js - Node.js 集群共享缓存
- c# - 为什么在没有序列化程序的情况下使用 Newtonsoft Json 进行驼峰化?
- java - .txt 文件上的 Java 正则表达式
- node.js - 将 SSE 与 NodeJ 一起使用时的多个 http 请求
- outlook - 调用 Outlook 加载项时不能选择超过 1 封电子邮件
- javascript - 无法使用 Thymeleaf 从 Html 中找到相关的 JS
- c# - 如何使用 C# regex for elasticsearch 将 json 格式句子转换为另一种格式?
- python - Nameko/RabbitMQ:OSError:服务器意外关闭连接