java - 使用 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 }}
解决方案
我发现它以某种方式没有使用该操作的更新版本。无论如何,我使用 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 文件。
推荐阅读
- jasper-reports - 条形图未显示所有类别 Jaspersoft Studio
- elasticsearch - match_phrase elasticsearch 中的可选术语
- sql - SQL Server CTE 语句中的错误
- gitlab - 将 confluence 与 gitlab 连接并更新 confluence 页面
- python - 如何在 Pycharm 中加载依赖项和子文件夹?
- python - Scrapy Python Web Scraping - 创建 XPath
- javascript - 循环 Google 分析 api 调用后的 Javascript,如何显示多个结果?
- css - CSS文本背景悬停效果在鼠标悬停时表现异常
- apache - 带有 apache 过滤器的 Fail2ban 40*-命中
- android - 如何创建圆形波纹?