【发布时间】:2020-08-29 13:46:44
【问题描述】:
我正在为我的项目使用支持 switch 表达式的 C# 8.0。我最近正在构建一个单元测试项目并生成代码覆盖率报告。但似乎所有 switch 表达式都有问题。我的代码中有一些类似于以下内容的行:
private static string GenerateRequestUrl(Language language, WeatherDataType dataType) {
var url = "https://data.weather.gov.hk/weatherAPI/opendata/weather.php?";
url += language switch {
Language.English => "lang=en",
Language.TraditionalChinese => "lang=tc",
Language.SimplifiedChinese => "lang=sc",
_ => "lang=en"
};
url += dataType switch {
WeatherDataType.LocalWeatherForecast => "&dataType=flw",
WeatherDataType.NineDaysWeather => "&dataType=fnd"
};
return url;
}
而且我的测试方法涵盖了上述所有情况,但报告显示那些带有 switch 表达式的行没有被涵盖。就像在这张图片中: Coverage Highlights in JetBrains Rider
我应该怎么做才能使它们被覆盖。
【问题讨论】:
-
升级您的测试框架和工具。我猜它不支持这些功能。
-
您使用的是什么版本的 Rider?
-
我使用的是最新版本的 Rider 2020.2.1
-
如果您使用旧式开关,测试是否通过?如果是,这是一个 .NET Framework 项目吗?如果是,您是否安装了所需的 Nuget 包? stackoverflow.com/questions/56651472/…
-
请提供一个最小的工作解决方案或您的项目的 github 链接。
标签: c# unit-testing code-coverage