首页 > 解决方案 > 使用 Firebase 的组件的 Java 单元测试

问题描述

我正在开发一个使用 Firebase 存储数据的项目,并且正在进行一些单元测试。我已经设置了一个 GitHub Action,它在每个推送或拉取请求上执行 mvn package 和 mvn test,问题是我在执行测试时收到以下错误:

java.io.IOException:应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。有关详细信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials

我用 .json 创建了秘密,这就是我编写 GitHub Action 的方式:

name: Maven CI/CD

on:
  push:
    branches: [ develop ]
  pull_request:
    branches: [ develop ]

jobs:
  build_and_test:
    runs-on: ubuntu-latest
            
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 15
      uses: actions/setup-java@v1
      with:
        java-version: 15

    - name: Cache the Maven packages to speed up build
      uses: actions/cache@v1
      with:
        path: ~/.m2
        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
        restore-keys: ${{ runner.os }}-m2      

    - name: Build project with Maven
      run: mvn -B package --file pom.xml
      env: 
        GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}
    
    - name: Run (J)Unit tests
      run: mvn clean test
      env:
        GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}

标签: javafirebasemavenunit-testing

解决方案


我发现它以某种方式没有使用该操作的更新版本。无论如何,我使用 google-github-actions/setup-gcloud@master 解决了如下设置:

- uses: google-github-actions/setup-gcloud@master
      with:
        project_id: ${{ secrets.GCP_PROJECT_ID }}
        service_account_key: ${{ secrets.GCP_SA_KEY }}
        export_default_credentials: true
    - name: Set GCP credentials
      run: gcloud info

GCP_PROJECT_ID 包含项目 ID,GCP_SA_KEY 包含从 Firebase 获取的服务帐户 .json 文件。


推荐阅读