Shell脚本测试利器:ts测试框架在鸿蒙PC上的完整适配实战

ts (test script) 是一个轻量级的 shell 脚本测试框架,本文档详细介绍如何将 ts 工具适配到开源鸿蒙PC平台,包括环境搭建、构建过程、使用示例和常见问题解决方案。

📋 目录


一、项目概述

1.1 ts 工具介绍

ts 是一个轻量级的 shell 脚本测试框架,由 Simon Chiang 开发并维护。它提供了简洁的 API 和丰富的功能,使得编写和运行 shell 脚本测试变得简单高效。

核心特性:

  • POSIX 兼容:完全遵循 POSIX 标准,可在任何 POSIX 兼容的 shell 中运行
  • 测试隔离:每个测试都有独立的临时目录,确保测试之间互不干扰
  • 灵活的断言:提供 assert_statusassert_output 等断言函数
  • 丰富的输出选项:支持彩色输出、调试模式、流式输出等多种格式
  • 易于集成:可以单独运行测试脚本,也可以批量运行多个测试文件

主要功能:

  • 测试脚本的编写和执行
  • 测试结果的统计和报告
  • 测试环境的自动清理
  • 支持 setup 和 teardown 钩子函数

1.2 项目信息

项目信息详情
项目名称ts (test script)
版本2.0.5(适配版本)<br>2.0.4(原始版本)
许可证MIT License
源码仓库https://github.com/thinkerbot/ts
适配平台鸿蒙PC (aarch64-linux-ohos)
项目类型纯 Shell 脚本(无需编译)
依赖无外部依赖

1.3 为什么需要 ts?

在日常 shell 脚本开发中,我们经常需要:

  1. 验证脚本功能:确保脚本按预期工作
  2. 回归测试:修改后快速验证功能未破坏
  3. 文档化行为:测试即文档,清晰说明脚本功能
  4. CI/CD 集成:自动化测试流程

ts 提供了简洁的 API 和丰富的功能,让 shell 脚本测试变得简单高效。

二、鸿蒙化适配设计

2.1 适配目标

🎯 核心目标:将 ts 测试框架适配到开源鸿蒙PC平台,使其能够在鸿蒙PC终端环境中正常运行,为鸿蒙生态的 shell 脚本测试提供支持。

适配价值

  • ✅ 为鸿蒙PC提供专业的 shell 脚本测试工具
  • ✅ 提升 shell 脚本开发的测试效率和质量
  • ✅ 展示纯脚本项目的鸿蒙化适配方法

2.2 技术方案

2.2.1 架构分析

ts 是一个纯 shell 脚本项目,不依赖任何编译型语言或外部库,这大大简化了适配工作:

ts 项目结构:
├── bin/
│   └── ts              # 主可执行脚本(POSIX shell)
├── man/
│   └── man1/
│       └── ts.1        # 手册页
├── test/               # 测试用例目录
├── hnp.json            # HNP 包配置文件
└── build_ohos.sh       # 鸿蒙构建脚本
2.2.2 适配策略

由于 ts 是纯 shell 脚本,适配工作主要包括:

  1. 脚本兼容性检查:确保脚本符合 POSIX 标准,能在鸿蒙PC的 shell 环境中运行
  2. 路径适配:确保脚本中的路径处理符合鸿蒙PC的文件系统规范
  3. 打包配置:创建 HNP(HarmonyOS Native Package)包配置文件
  4. 构建脚本:编写自动化构建脚本,支持交叉编译环境

2.3 构建系统设计

2.3.1 构建流程
构建流程:
1. 环境准备
   ├── 设置交叉编译工具链(clang/llvm)
   ├── 配置目标平台(aarch64-linux-ohos)
   └── 设置安装路径

2. 文件复制
   ├── 复制 bin/ts 到目标目录
   ├── 复制 man 手册页
   └── 复制 hnp.json 配置文件

3. 权限设置
   └── 设置可执行权限

4. 打包
   ├── 生成 HNP 包(.hnp)
   └── 生成 tar.gz 压缩包
2.3.2 关键配置

HNP 包配置(hnp.json):

{
    "type": "hnp-config",
    "name": "ts",
    "version": "2.0.5",
    "install": {}
}

构建脚本关键变量:

变量名说明示例值
HNP_PUBLIC_PATHHNP 包的公共安装路径/data/service/hnp/
TS_INSTALL_HNP_PATHts 的安装路径/data/service/hnp/ts.org/ts_2.0.5
TARGET_PLATFORM目标平台aarch64-linux-ohos
ARCHIVE_PATH打包输出路径output/

三、实现细节

💡 提示ts 是纯 shell 脚本项目,无需编译,适配工作主要是文件复制和权限设置。

3.1 构建脚本实现

构建脚本 build_ohos.sh 的核心逻辑:

#!/bin/bash
# ts OpenHarmony build script
# ts is a shell script testing framework

set -e
export TS_INSTALL_HNP_PATH=${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5

# 创建安装目录
mkdir -p ${TS_INSTALL_HNP_PATH}/bin
mkdir -p ${TS_INSTALL_HNP_PATH}/share/man/man1

# 复制 ts 可执行脚本
cp bin/ts ${TS_INSTALL_HNP_PATH}/bin/
chmod +x ${TS_INSTALL_HNP_PATH}/bin/ts

# 复制手册页
if [ -d man/man1 ]; then
    cp -r man/man1 ${TS_INSTALL_HNP_PATH}/share/man/
fi

# 复制HNP配置文件
cp hnp.json ${TS_INSTALL_HNP_PATH}/

# 打包HNP和tar.gz
${HNP_TOOL} pack -i ${TS_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/
tar -zvcf ${ARCHIVE_PATH}/ohos_ts_2.0.5.tar.gz ts_2.0.5/

3.2 兼容性处理

3.2.1 POSIX 兼容性

ts 脚本本身已经严格遵循 POSIX 标准,主要特点:

  • 使用 #!/bin/sh shebang,而非 bash 特定语法
  • 避免使用 bash 特有的扩展功能
  • 使用标准的 shell 内置命令和工具
3.2.2 路径处理

脚本中的路径处理已经考虑了跨平台兼容性:

# 使用相对路径和环境变量
TS_USR_DIR="${TS_USR_DIR:-$(pwd)}"
TS_TMP_DIR="${TS_TMP_DIR:-$TS_USR_DIR/tmp}"

3.3 构建环境配置

在主构建脚本 build.sh 中配置的关键环境变量:

# 交叉编译工具链
export CC=${COMPILER_TOOLCHAIN}clang
export CXX=${COMPILER_TOOLCHAIN}clang++

# 目标平台
export TARGET_PLATFORM=aarch64-linux-ohos
export SYSROOT=${OHOS_SDK}/native/sysroot

# HNP 工具和路径
export HNP_TOOL=${OHOS_SDK}/toolchains/hnpcli
export HNP_PUBLIC_PATH=${HNP_PERFIX}/data/service/hnp/

四、构建与部署

4.1 构建命令

在 macOS 开发环境中执行交叉编译:

cd HarmonyOSPC/build
./build.sh --sdk /Users/lijiajun/ohos-sdk

4.2 构建输出

构建成功后,会在 output/ 目录生成以下文件:

output/
├── ts.hnp                    # HNP 包文件(9.8KB)
└── ohos_ts_2.0.5.tar.gz     # tar.gz 压缩包(9.6KB)

4.3 安装路径

在鸿蒙PC上的安装路径结构:

/data/service/hnp/ts.org/ts_2.0.5/
├── bin/
│   └── ts                    # 主可执行脚本
├── share/
│   └── man/
│       └── man1/
│           └── ts.1          # 手册页
└── hnp.json                  # HNP 配置文件

五、使用示例

在这里插入图片描述

5.1 基本使用

5.1.1 编写测试脚本

创建一个简单的测试脚本 example_test

在鸿蒙PC上创建测试脚本:

# 创建测试脚本文件
cat > example_test << 'EOF'
#!/bin/sh

setup () {
    mkdir -p "$ts_test_dir"
    echo "Setup completed"
}

teardown () {
    rm -rf "$ts_test_dir"
    echo "Teardown completed"
}

test_arithmetic () {
    result=$((2 + 2))
    assert_status 0 $?
    assert_output "4" "$result"
}

test_file_operations () {
    echo "test content" > "$ts_test_dir/test_file.txt"
    assert_status 0 $?
    test -f "$ts_test_dir/test_file.txt"
    assert_status 0 $?
}

test_hello_world () {
    echo "Hello World"
    assert_status 0 $?
}

. ts
EOF

# 设置执行权限
chmod +x example_test

脚本内容说明:

  • #!/bin/sh:shebang 行,虽然鸿蒙PC上没有 sh 命令,但 ts 框架内部会处理
  • setup ():测试前的初始化函数(可选)
  • teardown ():测试后的清理函数(可选)
  • test_*:测试函数,以 test_ 开头
  • $ts_test_dir:ts 框架提供的测试临时目录
  • . ts:加载 ts 测试框架(必须放在脚本末尾)

注意:在鸿蒙PC上执行此脚本时,需要使用 bash example_test 而不是 ./example_test(如果遇到权限问题)。

5.1.2 运行测试

运行单个测试脚本:

# 方式1:使用 bash 执行脚本(鸿蒙PC推荐方式,最可靠)
bash example_test
# 输出示例:
# ✓ test_arithmetic (0.001s)
# ✓ test_file_operations (0.002s)
# 2 pass 0 fail 0 skip 0 s

# 方式2:直接执行(如果文件系统支持执行权限)
chmod +x example_test
./example_test

# 方式3:使用 ts 命令(注意:在鸿蒙PC上可能无法识别文件可执行性)
# 如果遇到 "[example_test] not executable" 错误,请使用方式1
ts example_test
# 或使用 ts 命令的彩色输出
ts -c example_test

重要说明(鸿蒙PC特殊限制):

在鸿蒙PC上,由于文件系统限制,ts 命令可能无法正确识别脚本的可执行性,即使已经使用 chmod +x 设置了权限。如果遇到 [example_test] not executable 错误:

  • 推荐解决方案:使用 bash example_test 直接执行脚本
  • ⚠️ ts 命令限制ts example_test 需要文件系统支持传统的执行权限检查,某些鸿蒙PC文件系统可能不支持

运行多个测试脚本:

# 方式1:使用 bash 逐个执行(鸿蒙PC推荐)
for test_file in test/*.sh; do
    bash "$test_file"
done

# 方式2:使用 ts 命令(如果文件系统支持执行权限检查)
ts test/*.sh

运行单个测试用例:

bash example_test test_arithmetic
# 或
./example_test test_arithmetic  # 如果已设置执行权限

5.2 高级功能

5.2.1 显示测试输出内容

默认情况下,ts 框架会过滤测试输出,只显示测试结果。如果想看到测试中的 echoprintf 等输出内容(如 “Hello World”),可以使用以下选项:

# 使用 -v 选项显示详细输出(包括 stderr,推荐)
bash example_test -v

# 使用 -a 选项显示所有测试的输出
bash example_test -a

# 使用 -s 选项流式输出(实时显示每个测试的输出)
bash example_test -s

# 使用 -w 选项显示原始输出(不格式化,最详细)
bash example_test -w

示例:Hello World 输出测试

# 创建包含输出的测试脚本
cat > hello_test.sh << 'EOF'
#!/bin/sh
test_hello () {
    echo "Hello World"
    echo "This is a test output"
    printf "Number: %d\n" 42
    assert_status 0 $?
}
. ts
EOF

# 默认输出(不显示 echo 内容)
bash hello_test.sh
# 输出:
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s

# 使用 -v 选项查看输出内容(推荐)
bash hello_test.sh -v
# 输出:
# Hello World
# This is a test output
# Number: 42
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s
5.2.2 彩色输出
bash example_test -c
# 或
ts -c example_test  # 如果文件系统支持执行权限检查

输出示例:

✓ test_arithmetic (0.001s)
✓ test_file_operations (0.002s)

2 pass 0 fail 0 skip 0 s
5.2.1.1 显示测试输出内容

默认情况下,ts 框架会过滤测试输出,只显示测试结果。如果想看到测试中的 echoprintf 等输出内容,可以使用以下选项:

# 使用 -v 选项显示详细输出(包括 stderr,推荐)
bash example_test -v

# 使用 -a 选项显示所有测试的输出
bash example_test -a

# 使用 -s 选项流式输出(实时显示每个测试的输出)
bash example_test -s

# 使用 -w 选项显示原始输出(不格式化,最详细)
bash example_test -w

示例:Hello World 输出测试

# 创建测试脚本
cat > hello_test.sh << 'EOF'
#!/bin/sh
test_hello () {
    echo "Hello World"
    echo "This is a test output"
    printf "Number: %d\n" 42
    assert_status 0 $?
}
. ts
EOF

# 默认输出(不显示 echo 内容)
bash hello_test.sh
# 输出:
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s

# 使用 -v 选项查看输出内容
bash hello_test.sh -v
# 输出:
# Hello World
# This is a test output
# Number: 42
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s


5.2.2 调试模式
ts -d example_test

会显示详细的执行跟踪信息,帮助定位问题。

5.2.3 流式输出
ts -s example_test

实时显示测试进度,适合长时间运行的测试套件。

5.2.4 执行单个测试(不运行测试框架)
bash example_test -e test_arithmetic
# 或
./example_test -e test_arithmetic  # 如果已设置执行权限

直接执行测试函数,方便调试。

5.3 实际应用场景

5.3.1 系统脚本测试

测试系统管理脚本:

#!/bin/sh

test_backup_script () {
    # 使用 ts_test_dir 而不是 /tmp(鸿蒙PC上 /tmp 不可用)
    backup_dir="$ts_test_dir/test_data"
    mkdir -p "$backup_dir"
    bash backup.sh "$backup_dir"
    assert_status 0 $?
    test -f "$backup_dir/backup.tar.gz"
    assert_status 0 $?
}

. ts
5.3.2 工具链测试

测试开发工具链:

#!/bin/sh

test_compiler () {
    echo 'int main(){return 0;}' > "$ts_test_dir/test.c"
    clang "$ts_test_dir/test.c" -o "$ts_test_dir/test"
    assert_status 0 $?
    "$ts_test_dir/test"
    assert_status 0 $?
}

. ts
5.3.3 配置文件验证

测试配置文件格式:

#!/bin/sh

test_config_syntax () {
    config_file="$ts_test_dir/app.conf"
    echo "key=value" > "$config_file"
  
    # 验证配置格式
    grep -q "key=value" "$config_file"
    assert_status 0 $?
}

. ts

六、技术亮点

6.1 零依赖适配

ts 作为纯 shell 脚本项目,适配到鸿蒙PC平台无需任何编译步骤,只需要:

  1. 文件复制
  2. 权限设置
  3. 打包分发

这使得适配过程非常简洁高效。

6.2 POSIX 标准兼容

严格遵循 POSIX 标准确保了:

  • 跨平台兼容性
  • 长期维护性
  • 与鸿蒙PC shell 环境的完美兼容

6.3 轻量级设计

  • 单个脚本文件,易于部署
  • 无外部依赖,降低维护成本
  • 快速启动,适合 CI/CD 集成

七、总结

7.1 适配成果

成功将 ts 测试框架适配到开源鸿蒙PC平台:

  • ✅ 完成构建脚本编写
  • ✅ 生成 HNP 包和 tar.gz 压缩包
  • ✅ 验证脚本在目标平台的兼容性
  • ✅ 提供完整的使用文档和示例

7.2 技术价值

  1. 生态完善:为鸿蒙PC提供了专业的 shell 脚本测试工具
  2. 开发效率:提升 shell 脚本开发的测试效率和质量
  3. 最佳实践:展示了纯脚本项目的鸿蒙化适配方法

7.3 后续优化方向

  1. 性能优化:针对大规模测试套件的性能优化
  2. 功能扩展:添加更多断言函数和测试工具
  3. 集成支持:与鸿蒙PC的 CI/CD 系统深度集成

八、鸿蒙PC终端测试指南

8.1 快速测试验证

在鸿蒙PC终端中,可以通过以下步骤快速验证 ts 工具:

🚀 一键复制执行(推荐)

直接复制以下代码块到鸿蒙PC终端,一键完成所有测试:

# ============================================
# ts 工具一键测试脚本
# 直接复制整个代码块到鸿蒙PC终端执行
# ============================================

echo "=========================================="
echo "ts 工具快速测试验证"
echo "=========================================="
echo ""

# 1. 验证 ts 命令
echo "[1/5] 验证 ts 命令..."
TS_PATH=$(which ts)
if [ -n "$TS_PATH" ]; then
    echo "✓ ts 命令找到: $TS_PATH"
else
    echo "✗ ts 命令未找到,请检查安装"
    exit 1
fi
echo ""

# 2. 查看帮助信息
echo "[2/5] 查看帮助信息..."
ts -h | head -15
echo ""

# 3. 创建测试脚本
echo "[3/5] 创建测试脚本..."
cat > test_demo.sh << 'EOF'
#!/bin/sh
test_simple () {
    true
}
. ts
EOF
echo "✓ 测试脚本已创建: test_demo.sh"
echo ""

# 4. 显示脚本内容
echo "[4/5] 测试脚本内容:"
cat test_demo.sh
echo ""

# 5. 运行测试
echo "[5/5] 运行测试..."
echo "----------------------------------------"
bash test_demo.sh
echo "----------------------------------------"
echo ""

echo "=========================================="
echo "✓ 测试完成!"
echo "=========================================="
echo ""
echo "如果看到 '✓ test_simple' 和 '1 pass 0 fail 0 skip',说明测试成功!"
echo "测试脚本位置: $(pwd)/test_demo.sh"
echo "可以继续使用此脚本进行更多测试"

分步执行方式:

如果需要分步执行,可以使用以下方法:

方法一:分步执行(推荐,更可靠)

# 1. 验证 ts 命令可用
which ts
# 应该输出:/data/service/hnp/bin/ts 或类似路径

# 2. 查看帮助信息
ts -h
# 或
ts --help

# 3. 切换到用户目录(鸿蒙PC上 /tmp 可能不可用)
cd ~
# 或使用当前目录
pwd

# 4. 创建简单测试脚本(使用 echo 方式,最可靠)
echo '#!/bin/sh' > test_demo.sh
echo 'test_simple () {' >> test_demo.sh
echo '    true' >> test_demo.sh
echo '}' >> test_demo.sh
echo '. ts' >> test_demo.sh

# 5. 设置执行权限
chmod +x test_demo.sh

# 6. 验证文件已创建
ls -l test_demo.sh

# 7. 运行测试(使用 bash 执行,鸿蒙PC推荐方式)
bash test_demo.sh
# 预期输出(成功标志):
# ✓ test_simple (0.001s)
# 1 pass 0 fail 0 skip 0 s

# 或者如果设置了执行权限,可以尝试:
# ./test_demo.sh

# 8. 验证测试结果(可选)
# 如果看到上述输出,说明测试成功!
# 可以查看脚本内容确认:
cat test_demo.sh
# 应该显示:
# #!/bin/sh
# test_simple () {
#     true
# }
# . ts

注意: 在鸿蒙PC上,/tmp 目录可能不存在或不可访问。建议在用户主目录(~)或当前工作目录创建测试脚本。

方法二:使用 echo 命令创建(最简单,推荐)

# 1. 确保在可写目录中
cd ~
pwd

# 2. 创建测试脚本(在当前目录,避免 /tmp 权限问题)
echo '#!/bin/sh' > test_demo.sh
echo 'test_simple () {' >> test_demo.sh
echo '    true' >> test_demo.sh
echo '}' >> test_demo.sh
echo '. ts' >> test_demo.sh

# 3. 验证文件已创建
ls -l test_demo.sh

# 4. 设置执行权限
chmod +x test_demo.sh

# 5. 执行测试(注意:鸿蒙PC上没有 sh 命令,必须使用 bash)

# 方法A:使用 bash 执行(推荐,鸿蒙PC上必须用这个)
bash test_demo.sh

# 方法B:如果设置了执行权限,可以尝试直接执行
chmod +x test_demo.sh
./test_demo.sh

# 注意:不要使用 sh test_demo.sh,因为鸿蒙PC上没有 sh 命令

# 成功输出示例:
# ✓ test_simple (0.001s)
# 1 pass 0 fail 0 skip 0 s

方法三:使用 printf(一行命令,推荐使用 bash 执行)

# 在当前目录创建并执行(使用 bash,鸿蒙PC上没有 sh)
printf '#!/bin/sh\ntest_simple () {\n    true\n}\n. ts\n' > test_demo.sh && bash test_demo.sh

# 或者分步执行:
printf '#!/bin/sh\ntest_simple () {\n    true\n}\n. ts\n' > test_demo.sh
bash test_demo.sh  # 使用 bash 执行(鸿蒙PC必须用 bash,没有 sh)

常见问题排查:

  1. /tmp 目录不可用

    • 在鸿蒙PC上,/tmp 目录可能不存在或不可访问
    • 解决方案:使用用户主目录(~)或当前工作目录创建脚本
    cd ~
    # 然后使用上述方法创建脚本
    
  2. 检查当前目录权限

    pwd
    ls -la
    
  3. 验证 ts 命令路径

    which ts
    # 应该输出:/data/service/hnp/bin/ts
    
  4. 测试脚本执行成功标志

    • 成功输出:看到以下内容表示测试成功

      ✓ test_simple (0.001s)
      1 pass 0 fail 0 skip 0 s
      

      解读

      • = 测试通过(绿色对勾)
      • test_simple = 测试函数名
      • (0.001s) = 测试耗时
      • 1 pass = 1个测试通过
      • 0 fail = 0个失败
      • 0 skip = 0个跳过
      • 0 s = 总耗时(秒)
    • 失败输出示例:如果测试失败,会看到类似:

      ✗ test_simple (0.001s)
      0 pass 1 fail 0 skip 0 s
      
    • ⚠️ 权限错误(Permission denied)

      • 问题:看到 bash: ./test_demo.sh: Permission deniedPermission denied
      • 解决步骤
        1. 检查文件权限:ls -l test_demo.sh
        2. 设置执行权限:chmod +x test_demo.sh
        3. 再次检查权限:ls -l test_demo.sh(应该看到 -rwxr-xr-x 或类似)
        4. 重要:如果还是不行,使用 bash 执行(鸿蒙PC上没有 sh 命令):
          # 使用 bash 执行(推荐,鸿蒙PC必须用这个)
          bash test_demo.sh
          
        5. 如果文件系统不支持执行权限(如某些只读或特殊挂载),使用 bash test_demo.sh 代替 ./test_demo.sh
    • ⚠️ sh: command not found 错误

      • 问题:鸿蒙PC上没有 sh 命令
      • 解决方案:使用 bash 代替 sh
      # 错误:sh test_demo.sh  # 会报错:bash: sh: command not found
      # 正确:bash test_demo.sh  # 使用 bash 执行
      
    • ⚠️ [example_test] not executable 错误(使用 ts 命令时)

      • 问题:使用 ts example_test 时出现 [example_test] not executable 错误
      • 原因:ts 命令使用 [ -x file ] 检查文件可执行性,某些鸿蒙PC文件系统不支持此检查
      • 解决方案
        # 错误:ts example_test  # 可能报错:[example_test] not executable
        # 正确:bash example_test  # 直接使用 bash 执行,绕过 ts 的可执行性检查
        
      • 说明bash example_test 方式在鸿蒙PC上最可靠,推荐使用此方式
  5. 验证脚本内容

    cat test_demo.sh
    # 应该显示完整的脚本内容
    

8.2 实际测试示例

示例1:测试文件操作

# 创建测试目录
mkdir -p ~/test
cd ~/test

# 创建测试脚本
cat > test_file.sh << 'EOF'
#!/bin/sh
setup () {
    mkdir -p "$ts_test_dir"
}
test_create_file () {
    echo "test" > "$ts_test_dir/file.txt"
    test -f "$ts_test_dir/file.txt"
    assert_status 0 $?
}
. ts
EOF

# 设置权限并运行(使用 bash 执行,鸿蒙PC推荐方式)
chmod +x test_file.sh
bash test_file.sh

# 或者使用 ts 命令运行
ts test_file.sh

示例2:测试字符串操作

# 在测试目录中创建脚本
cat > test_string.sh << 'EOF'
#!/bin/sh
test_string_match () {
    str="hello world"
    assert_output "hello world" "$str"
}
. ts
EOF

# 设置权限并运行
chmod +x test_string.sh

# 方式1:使用 bash 执行
bash test_string.sh

# 方式2:使用 ts 命令(彩色输出)
ts -c test_string.sh

# 方式3:使用 ts 命令(流式输出)
ts -s test_string.sh

8.3 详细测试指南

更多详细的测试示例和说明,请参考:鸿蒙PC终端测试指南.md

九、参考资料

📚 官方文档

🔗 鸿蒙相关

📖 相关文章


📎 附录

A. 📁 完整文件清单

📝 创建的文件:

  • 🔧 build_ohos.sh - OpenHarmony构建脚本
  • 📝 hnp.json - HNP包配置文件
  • 📄 CHANGELOG - 变更日志(添加鸿蒙PC适配信息)
  • 📄 README.OPENSOURCE - 开源说明文档

📝 修改的文件:

  • 🔧 build_ohos.sh - 配置HNP包打包(纯Shell脚本,无需编译)

📦 生成的文件:

  • 📦 output/ts.hnp - HNP格式安装包
  • 📦 output/ohos_ts_2.0.5.tar.gz - tar.gz格式发布包

B. 💻 参考命令

# 构建命令
cd /Users/lijiajun/ohos-sdk/HarmonyOSPC/build
SPECIFIC_DIR=ts4oh ./build.sh --sdk /Users/lijiajun/ohos-sdk

# 查看构建输出
ls -lh output/ | grep ts

# 验证安装目录
tree ${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/

# 验证脚本文件格式(在macOS上)
file ${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/bin/ts
# 应该显示: POSIX shell script text executable

# 测试命令(在鸿蒙PC上)
export PATH=${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/bin:$PATH
ts -h
bash example_test
bash example_test -v
bash example_test -c

# 如果出现"command not found"错误,检查:
# 1. HNP包是否正确合入base.hnp
# 2. 文件是否在sysroot/bin/目录下
# 3. PATH环境变量是否包含sysroot/bin

C. 📌 版本信息

  • 📁 ts版本: 2.0.5
  • 📅 适配日期: 2025-12-09
  • 🎯 目标平台: aarch64-linux-ohos
  • 🔧 项目类型: POSIX Shell脚本(无需编译)
  • 📦 依赖数量: 零运行时依赖(纯Shell脚本)
  • 🔗 源仓库地址: https://github.com/thinkerbot/ts
  • 🔗 适配完成仓库地址: https://gitcode.com/szkygc/ts4oh

D. 📚 相关资源

  • 🌐 ts GitHub仓库: https://github.com/thinkerbot/ts
  • 📖 POSIX Shell标准: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
  • 🌐 OpenHarmony PC开发者专区: https://gitcode.com/OpenHarmonyPCDeveloper
  • 🌐 HarmonyOS PC 开发者社区: https://harmonypc.youkuaiyun.com/content

E. 💡 技术说明

Shell测试框架简介

ts提供了强大的Shell脚本测试能力:

  1. 测试隔离: 每个测试都有独立的临时目录,确保测试之间互不干扰
  2. 断言函数: 提供 assert_statusassert_output等断言函数
  3. 输出选项: 支持监控模式、流式模式、原始模式等多种输出格式
  4. 调试支持: 提供调试模式,显示详细的执行跟踪信息

ts的优势

  • ✅ 零依赖:纯Shell脚本,无需任何外部依赖
  • ✅ POSIX兼容:完全遵循POSIX标准,可在任何POSIX兼容的shell中运行
  • ✅ 易于使用:简单的测试函数定义语法
  • ✅ 灵活输出:支持多种输出格式和颜色支持

🎉 结语

本文档详细介绍了ts Shell测试框架在鸿蒙PC平台上的适配过程。通过配置HNP包打包、确保脚本兼容性等问题,成功实现了ts在鸿蒙PC平台上的部署。

ts工具为Shell脚本开发提供了强大的测试支持,是开发可靠脚本工具的重要基础框架。希望本文档能够帮助开发者:

  • 📊 理解Shell脚本测试的使用
  • 🔧 掌握Shell脚本项目适配OpenHarmony的方法
  • 📦 了解HNP包的构建和打包流程
  • 💻 学习命令行工具的开发实践

💬 如有问题或建议,欢迎反馈!


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值