Fantom 为什么没有调用FancOrdinRunner suiteSetup?

Fantom 为什么没有调用FancOrdinRunner suiteSetup?,fantom,afbedsheet,fancordion,Fantom,Afbedsheet,Fancordion,我按照中的MyFancOrdinonRunner示例测试床单应用程序,但没有调用suiteSetup方法(请参见下文),服务器保持为null,从而导致fixture测试失败,出现NullPointerException override Void suiteSetup() { super.suiteSetup server = BedServer(AppModule#.pod).addModule(WebTestModule#).startup } 查看FancOrdinRun

我按照中的MyFancOrdinonRunner示例测试床单应用程序,但没有调用suiteSetup方法(请参见下文),服务器保持为null,从而导致fixture测试失败,出现NullPointerException

override Void suiteSetup() {
    super.suiteSetup
    server = BedServer(AppModule#.pod).addModule(WebTestModule#).startup
}
查看FancOrdinRunner源代码,runFixture(Obj fixtureInstance)方法应该在第一次按照此代码运行设备时调用suiteSetup()

FixtureResult runFixture(Obj fixtureInstance) {
    ...
    locals := Locals.instance
    firstFixture := (locals.originalRunner == null) 
    if (firstFixture) {
        locals.originalRunner = this
        suiteSetup()
        ...
}
但在我的例子中,由于某种原因,条件(locals.originalRunner==null)必须返回false,从而导致跳过suiteSetup()调用。这段代码似乎使用了我不熟悉的Fantom演员

我在MyFancordionRunner中手动调用SuiteSet,如下所示:

override Void fixtureSetup(Obj fixtureInstance) {
    if (server == null) suiteSetup         
    ...
此解决方案解决了NullPointerException问题,并允许fixture成功运行,但我不知道此解决方案是否违背了Actor逻辑的目的,我认为它仅用于调用suiteSetup一次


有没有人能解释一下,在runFixture(…)中发生了什么,阻止了suiteSetup方法被调用?

如果没有看到更多的代码,我不知道这里发生了什么

使用的
Actor
的唯一部分是
Actor.locals()
,它实际上只是一个用来存放线程局部变量的容器,因为假设所有测试都在同一个线程中运行


如您所示,
runFixture()
中的逻辑非常简单,您确定要调用它吗

如果没有看到更多的代码,我不知道这里发生了什么

使用的
Actor
的唯一部分是
Actor.locals()
,它实际上只是一个用来存放线程局部变量的容器,因为假设所有测试都在同一个线程中运行

如您所示,
runFixture()
中的逻辑非常简单,您确定要调用它吗