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
相关产品推荐
相关产品推荐

