You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions执行./gradlew test报错:找不到单元测试目录

问题分析与解决方案

你的核心错误是把两个独立命令错误地合并成一行,导致chmod命令误将test当成要修改权限的文件,而非执行单元测试命令。

错误原因拆解

原工作流中这一行:

chmod +x ./gradlew  test

chmod的语法是chmod <权限> <文件路径>,这里空格分隔的test会被chmod当作第二个文件参数,但项目里不存在名为test的文件,因此报错。同时你设置的working-directory: app/src/完全没必要——gradlew脚本在项目根目录,app/src/是源码目录,根本找不到gradlew,只会加剧错误。

修正后的工作流

有两种正确写法,任选其一即可:

写法1:拆分两个步骤(更清晰)

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

jobs: 
  build: 
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Make gradlew executable
        run: chmod +x ./gradlew
      - name: Run unit tests
        run: ./gradlew test

写法2:用&&连接命令(紧凑)

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

jobs: 
  build: 
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Run unit tests
        run: chmod +x ./gradlew && ./gradlew test

额外建议

  • 建议将actions/setup-java@v1升级到v3,新版本支持更多JDK版本和配置选项,写法调整为:
    - name: Set up JDK 1.8
      uses: actions/setup-java@v3
      with:
        java-version: '8'
        distribution: 'temurin'
    
  • 不需要手动指定working-directory,默认的项目根目录就是执行gradlew的正确位置。

内容的提问来源于stack exchange,提问作者AShX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:06:31