如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行

Posted

技术标签:

【中文标题】如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行【英文标题】:How to have Detox test run only on IOS & disable Android run 【发布时间】:2019-05-17 20:35:14 【问题描述】:

我正在使用 Detox 为 ios 创建一些 UI 测试。 最初,iOS 测试运行良好。 [注意-目前没有任何 android 测试]

Config.json

    "setupTestFrameworkScriptFile": "./init.js",
    "testEnvironment": "node"

package.json sn-p:

"detox": 
"configurations": 
  "ios.sim.debug": 
    "binaryPath": "/Users/laxmisomni/Documents/Projects/mambo/ios/build/Build/Products/Debug-iphonesimulator/mambo.app",
    "build": "xcodebuild -workspace ios/appName.xcworkspace -scheme appName -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
    "type": "ios.simulator",
    "name": "iPhone 7"
  
,
"test-runner": "jest",
"specs": "e2e"
,

错误:

Ran all test suites matching /e2e/i with tests matching "^((?!:android:).)*$".
child_process.js:651
    throw err;
    ^

Error: Command failed: node_modules/.bin/jest e2e --config=e2e/config.json --maxWorkers=1 '--testNamePattern=^((?!:android:).)*$'
    at checkExecSyncError (child_process.js:611:11)

Other dependencies in Package.json:
    "babel-eslint": "^8.2.3",
    "babel-jest": "23.0.1",
    "babel-preset-react-native": "4.0.0",
    "babel-register": "^6.26.0",

有什么方法可以禁用尝试运行不存在的 Android 测试的测试运行器?

【问题讨论】:

【参考方案1】:

Detox 没有运行安卓测试。由于正则表达式中的negative lookahead,它看起来只是这样。

--testNamePattern='^((?!:android:).)*$'

这是我运行的成功 iOS 测试的输出。

detox test
node_modules/.bin/jest e2e --config=e2e/config.json --maxWorkers=1 --testNamePattern='^((?!:android:).)*$'

 server listening on localhost:55356...

 : Searching for device matching iPhone 7...

 : Uninstalling com.testapp.test...

 : com.testapp.test uninstalled
 : Installing /Users/work/Documents/test/ios/build/Build/Products/Debug-iphonesimulator/test.app...
 : /Users/work/Documents/test/ios/build/Build/Products/Debug-iphonesimulator/test.app installed
 : Terminating  com.testapp.test...
 : com.testapp.test terminated
 : Launching  com.testapp.test...
7: com.testapp.test launched. The stdout and stderr logs were recreated, you can watch them with:
        tail -F /Users/work/Library/Developer/CoreSimulator/Devices/AF406169-5CF3-4480-9D00-8F934C420043/data/tmp/detox.last_launch_app_log.out,err
 PASS  e2e/firstTest.spec.js (10.504s)
  Example
    ✓ should have Home tab (1283ms)
    ✓ should show detail screen after tap (1872ms)

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        11.153s, estimated 12s
Ran all test suites matching /e2e/i with tests matching "^((?!:android:).)*$".

关于您的测试失败,如果没有看到日志的完整输出,我们无法为您提供帮助。

【讨论】:

以上是关于如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行的主要内容,如果未能解决你的问题,请参考以下文章

Detox - 努力在基本的 iOS RN 应用程序上“构建二进制的 Detox 版本,并运行测试”

在 iOS 上运行 detox 测试时模拟器无法打开

获取 ReferenceError:在 react-native ios 上运行 detox 测试时未定义设备

使用 Detox 检查禁用按钮状态

在 TravisCI 上使用 Detox 进行测试时,如何将测试结果(失败/通过)写入变量/文件

使用 Detox 在 Android 上设置相机权限