1

类似于我如何在 Java 中为我的 Fitnesse Fixture 传递程序参数?

..我希望使用fitnesseMain.FitNesseMain.launchFitNesse(Arguments arguments)并行启动我的Fitnesse测试...并将线程安全对象传递给每个测试,以便稍后由Fitnesse运行的测试代码访问。

测试代码本身是普通的旧 Java,使用 givwenzen 从 Fitnesse 调用。Java 测试代码继续动态启动 Selenium 测试。

我需要通过 Fitnesse 将这些线程安全对象一直传递给 Java 测试脚本,以便它们使用正确的 org.openqa.selenium.remote.DesiredCapabilities 启动 Selenium RemoteWebDriver。

我曾尝试使用旧的 java.lang.ThreadLocal,但似乎 Fitnesse 正在生成自己的线程来运行测试,从而有效地消除了此选项。

4

1 回答 1

0

考虑到 Givwenzen 是使用 Slim 编写的,我认为您想要做的事情是不可能的。如果可能的话,这肯定不容易,因为 Slim 通过在单独的进程中运行测试来工作。

因此,当您运行 FitNesse 时,它​​会创建 Web 服务器和 wiki。它作为一个 java 任务运行。当您单击“测试”或“套件”按钮(或使用 URL)时,它会创建一个新的 Java 进程,即 SlimServer。然后 FitNesse 服务器将指令作为字符串发送到 SlimServer,然后 SlimServer 将这些指令处理为运行测试的指令。因此,通过 FitNesseMain 启动的代码与 slim 测试之间的耦合实际上有点松散。这是有目的的,因为它让 SlimServer 实现与语言无关。

在 SlimServer 中,可以处理实际的对象引用,这可能没问题,但我怀疑监管链在每一步都是线程安全的。

对不起。也许其他人会对如何解决我所描述的问题有所了解。

于 2012-12-05T17:29:22.280 回答