Fantom 为什么没有调用FancOrdinRunner suiteSetup?
我按照中的MyFancOrdinonRunner示例测试床单应用程序,但没有调用suiteSetup方法(请参见下文),服务器保持为null,从而导致fixture测试失败,出现NullPointerExceptionFantom 为什么没有调用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
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()
中的逻辑非常简单,您确定要调用它吗