跳到主要内容

测试指南

本文描述 LeanCLR src/tests/ 的构建、运行方式与测试体系概览。编写用例与目录约定见 测试框架

脚本索引见 开发脚本脚本参考

测试体系概览

src/tests/
├── basic-tester/ # C++ runner — CI 主路径(解释器 + BCL + ILTests)
├── aot-tester/ # AOT 正确性 runner
└── managed/ # C# 测试程序集(CoreTests、CorlibTests、AotTests、ILTests…)
Runner加载程序集用途
basic-testerCoreTests, CorlibTests, ILTests, …CI 默认
RunTests.exe含 AotTests 等本地一次性跑多套 managed 测试
aot-testerAotTestsAOT 流水线验证

构建与运行

一键(推荐)

scripts\test\build-all.bat Debug x64
scripts\test\run.bat Debug x64

Linux / macOS:

./scripts/ci.sh Release

分步

scripts\test\basic-tester\build.bat Debug x64
dotnet build src\tests\managed\managed.sln -c Debug
scripts\test\run.bat Debug x64

build-all 会将 Common.dllCoreTests.dllCorlibTests.dllILTests.dllILTests.Native.dll 等复制到 runner 旁 dlls/ 目录。

AOT 测试

scripts\build.bat aot-tester gen-cpp
scripts\build.bat aot-tester run Release x64

本地调试(含 AotTests)

dotnet build src\tests\managed\managed.sln -c Debug
out\dotnet\RunTests\Debug\RunTests.exe

输出路径

  • C++ runner:out/cmake/tests/basic-tester/<Config>-<Arch>/bin/...
  • Managed DLL:out/dotnet/<ProjectName>/<Config>/

输出目录结构

命名规范

类别规范示例
测试类TC_{主题}TC_conv_i4
回归Issue_{yyyyMMdd}_{desc}Issue_20220617_ArrayCustomArg
FixtureTC_ 前缀TypeStaticFields

新用例请遵循上述约定,避免 Test*TC_* 混用。

常见问题

报错 "Test runner not found"
先构建 basic-tester:scripts\test\basic-tester\build.bat Debug x64

能否只跑单个测试?
当前 runner 不支持过滤,所有带 [UnitTest] 的方法都会执行。

ILTests 如何添加?
测试框架 — ILTests

Assert 维护位置
仅在 managed/Common/Assert.cs 维护一份。

相关文档