与how do i pass program arguments in java for my Fitnesse Fixture?类似
..我希望使用fitnesseMain.FitNesseMain.launchFitNesse(Arguments参数)并行启动我的Fitnesse测试...并将线程安全对象传递给每个测试,以便稍后由Fitnesse运行的测试代码访问。
测试代码本身是普通的旧Java,使用givwenzen从Fitnesse调用。 Java测试代码继续动态启动Selenium测试。
我需要通过Fitnesse将这些线程安全对象一直传递给Java测试脚本,以便他们使用正确的org.openqa.selenium.remote.DesiredCapabilities启动Selenium RemoteWebDriver。
我尝试过使用旧的java.lang.ThreadLocal,但似乎Fitnesse正在生成自己的线程来运行测试,这有效地消除了这个选项。
答案 0 :(得分:0)
考虑到Givwenzen是用Slim编写的,我不认为你想做什么是可能的。如果可能的话,这当然不容易,因为Slim通过在单独的进程中运行测试来工作。
因此,当您运行FitNesse时,它会创建Web服务器和Wiki。这是一个java任务。当您单击“测试”或“套件”按钮(或使用URL)时,它会创建一个新的Java进程,即SlimServer。然后FitNesse服务器将指令作为字符串发送到SlimServer,然后SlimServer将这些指令处理为运行测试的指令。因此,通过FitNesseMain启动的代码与细长测试之间的耦合实际上是松散的。这是故意完成的,因为它使SlimServer实现与语言无关。
在SlimServer中,有能力处理实际的对象引用,这可能没问题,但我怀疑监管链在每一步都是线程安全的。
对不起。也许其他人会知道如何解决我所描述的问题。