rust - 使用 Rust,你如何在发布到 crate.io 之前执行平台测试?

标签 rust integration-testing

我正在开发一个框架,我正在我的Mac 上测试它。最后,我想发布到 crate.io。我希望它不会因为平台测试不佳而崩溃。是否有一种方法可以在不直接访问这些平台的情况下测试所有或至少大多数当前部署平台?例如,我无权访问 Windows 框。

最佳答案

如果您在 github 上托管您的代码,您可以设置 github 操作以在多个平台上构建和测试您的代码。

我有两组在我的代码上运行的操作。

  • 在 Linux 上运行测试、clippy 和检查 rust fmt 仅用于正常的推送和拉取请求
  • 另一个在设置发布分支时运行并创建发布、运行测试、构建和上传适用于 Windows、Linux 和 macOS 的发布二进制文件。

您可以看到所有的完整文件 here .

但是结合这些并简化意味着要对每个推送和拉取请求进行测试,您将在 .github/workflows/testing.yml 中创建一个文件,如下所示(未测试):

name: Run Tests

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build_matrix:
    name: Run tests for ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        name: [linux, windows, macos]
        include:
          - name: linux
            os: ubuntu-latest
          - name: windows
            os: windows-latest
          - name: macos
            os: macos-latest
    steps:
    - uses: actions/checkout@v1

    - uses: actions-rs/toolchain@v1
      with:
        profile: minimal
        toolchain: nightly
        override: true

    - name: Test
      run: cargo test

关于rust - 使用 Rust,你如何在发布到 crate.io 之前执行平台测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64267917/

相关文章:

django - 如何在 vim 中运行 django 单元测试?

testing - 在集成测试中访问内存 dbcontext

ruby-on-rails - 集成测试在 Stripe 上创建测试用户,如何停止或 stub

java - 单元测试类的最佳实践,主要负责调用依赖项的方法,但也包含逻辑

rust - 用什么语言编写 Rust 编译器?

rust - 使用显式生命周期时,Rocket 的状态错误为 "Attempted to retrieve unmanaged state"?

java - 第三方库中是否有用于 JUnit @Category() 的接口(interface)

rust - 在单独的模块中使用时使用未声明的类型或模块 `std`

generics - 是否可以为除了一个类型子集以外的所有类型都可以使用的特征创建通用的impl?

rust - 是否可以用稳定的 rustc 运行夜间 cargo