SuperAPI AI 工具集

metar-testing

测试与质量

查看项目

更新于 10-15 08:44

技能介绍

用途

metar-testing 是 afonsoft/metar-decoder 项目中的测试指南技能,面向 METAR 和 TAF 解码器的测试工作。它用于在编写测试、提高测试覆盖率、调试测试失败或验证解码器行为时提供统一的做法与命令参考。

主要能力

该技能描述了项目的测试技术栈与现状:使用 NUnit 作为测试框架,使用 coverlet 进行覆盖率统计;当前共有 421 个测试,覆盖率约 98%。测试按 ChunkDecoder 和实体(Entity)进行组织。

测试目录结构如下:

tests/ ├── Metar.Decoder.Tests/ │ ├── ChunkDecoder/ # 每个 decoder 一个文件 │ └── Entity/ # 实体测试 └── Taf.Decoder.Tests/ ├── ChunkDecoder/ └── Entity/

使用方式

技能给出的测试模式包括:使用 NUnit 的 [Test]、[TestCase]、[TestCaseSource];使用真实的 METAR/TAF 数据进行测试;覆盖严格模式与非严格模式;测试边界情况,如 CAVOK、NIL、RTD、负值;测试日期翻转(月末)。

常用命令如下:

全部测试

dotnet test MetarDecoder.sln --configuration Release

带覆盖率

dotnet test MetarDecoder.sln --collect:"XPlat Code Coverage"

仅 METAR

dotnet test tests/Metar.Decoder.Tests/ --configuration Release

仅 TAF

dotnet test tests/Taf.Decoder.Tests/ --configuration Release

指定测试

dotnet test --filter "FullyQualifiedName~IcaoChunkDecoderTest"

示例测试代码:

[Test] public void TestParseICAO() { var decoder = new MetarDecoder(); var metar = decoder.Parse("METAR KJFK 121755Z 31008KT 10SM FEW250 M04/M19 A3036"); Assert.That(metar.ICAO, Is.EqualTo("KJFK")); }

[TestCase("METAR KJFK 121755Z 31008KT 10SM FEW250 M04/M19 A3036")] [TestCase("METAR EGLL 121750Z 27009KT 9999 FEW040 07/01 Q1024")] public void TestParseMultipleStations(string raw) { var decoder = new MetarDecoder(); var metar = decoder.Parse(raw); Assert.That(metar.ICAO, Is.Not.Null); Assert.That(metar.ICAO.Length, Is.EqualTo(4)); }

适用场景

适用于为 METAR/TAF 解码器新增或维护测试、提升覆盖率、排查测试失败,以及验证解码器在各类气象报文下的解析行为。

限制

技能明确列出以下约束:不得修改既有测试以强行通过;覆盖率不得低于约 98% 的基线;net48 测试无法在 Linux 上运行;不要提交 TestResults/ 目录。