Java:如何根据是否为Mac M1设备有条件启用单元测试
如何识别Mac M1设备并仅在非M1设备启用单元测试
通过系统架构命令判断
- M1芯片的Mac终端原生架构是
arm64,Intel芯片则是x86_64,可以用uname -m快速判断:if [ "$(uname -m)" != "arm64" ]; then # 替换成你的单元测试启动命令,比如 pytest、npm test 等 npm test fi - 要是终端是通过Rosetta运行的,
uname -m会返回x86_64,这时候可以用更精准的CPU品牌检测:if ! sysctl -n machdep.cpu.brand_string | grep -q "Apple M1"; then # 执行单元测试 fi
CI/CD环境下的判断
如果是在CI/CD流水线里(比如GitHub Actions),很多平台会自带架构标识环境变量:
- 比如GitHub Actions的
RUNNER_ARCH变量,M1对应ARM64,Intel对应X64,脚本判断示例:if [ "$RUNNER_ARCH" != "ARM64" ]; then # 启动单元测试 fi
编程语言内直接判断
如果需要在代码逻辑里控制测试执行,不同语言有对应的获取架构方法:
- Python示例:
import platform if platform.machine() != "arm64": # 运行单元测试 import unittest unittest.main() - Node.js示例:
if (process.arch !== 'arm64') { // 引入并执行测试逻辑 require('./test-suite.js'); }
内容的提问来源于stack exchange,提问作者Glen Campbell
相关产品推荐
相关产品推荐

