在 iOS 上进行 运行 排毒测试时,模拟器无法打开

The simulator doesn't open when running detox test on iOS

当我尝试 运行 detox test 时,模拟器似乎没有打开,测试只是超时。

我确认我的设置是正确的,并且还尝试 以确保我的模拟器可以从终端启动,并且我的 detox 配置中的设备类型是正确的。

我收到的错误如下。

Timeout - Async callback was not invoked within the 300000ms timeout specified by jest.setTimeout.
Error: Timeout - Async callback was not invoked within the 300000ms timeout specified by jest.setTimeout.

DetoxRuntimeError: Detox instance has not been initialized

HINT: There was an error on attempt to call detox.init()

DetoxRuntimeError: Aborted detox.init() execution, and now running detox.cleanup()

HINT: Most likely, your test runner is tearing down the suite due to the timeout error

这是我的配置,出于隐私原因删除了应用名称。

"ios.sim.debug": {
    "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app",
    "build": "xcodebuild -workspace ios/example.xcworkspace -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
    "type": "ios.simulator",
    "device": {
        "type": "iPhone 11 Pro"
    }
},

我该如何调试它?

我发现从 Xcode 9 detox 开始以无头模式运行 iOS 模拟器。如果您正在 运行 测试,然后使用 Spotlight 拉起模拟器并按回车键,那么它将把所有 detox 已打开的模拟器带到前面。

我从这个 comment.

中发现了这个

我还发现我的测试超时的原因是提示用户需要响应,这阻止了 detox 测试的进行。

您的测试似乎没有关联 detox .init 方法。 确保你有 e2e/init.js 并且你需要添加

before(async () => {
     await detox.init(config);
});

还要确保在 config.json 中调用此文件(这里可能是错误的,我使用的是 Mocha 而 mocha.opts )