我使用 JavaScript 创建了一个 Expo 应用程序。我已经在这个 Expo 应用程序中安装了 Realm。我已经为这个应用程序编写了快照测试。我还为 Realm 数据库编写了测试。这些测试按预期工作。
当我在本地计算机上运行测试时,测试通过了。
我已将此应用程序和测试推送到 GitHub。每次推送到 GitHub 时,我都会编写一个
.github/workflows/testing.yml
文件来测试这个应用程序。这些测试失败的原因是它们在 GitHub 上运行的时间太长。然而,它们在我的台式电脑上运行只需几秒钟,这不是一台强大的机器。
如何在每次推送到 GitHub 时正确运行测试?
我尝试使用的
.github/workflows/testing.yml
文件的一个示例:
name: Run Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "20"
- name: Install dependencies
run: |
npm install
- name: Run tests
env:
CI: true
run: |
npm test --detectOpenHandles --forceExit
我还尝试创建更大的
.github/workflows/testing.yml
文件,用于下载 Android 命令行工具、安装 Android 模拟器并在测试代码之前在 Android 模拟器上运行应用程序。然而,这也失败了。
不要使用 npm 命令,而是使用
package.json
文件中找到的正确测试方法来测试代码。
例如,如果
package.json
文件中的命令为:"test": "jest --watchAll --runInBand --detectOpenHandles"
,则正确的 .github/workflows/testing.yml
文件将为:
name: Run Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install Dependencies
run: npm install
- name: Run tests
run: npx jest --runInBand --detectOpenHandles --forceExit
请勿使用
--watchAll
命令,因为这可能会导致您面临的问题。使用 --forceExit
文件中的 .github/workflows/testing.yml
命令确保退出测试。
这样,您就可以保持
package.json
文件中的命令不变,并可以以相同的方式继续在本地计算机上测试应用程序。