在从命令行运行BenchmarkDotNet项目时,我试图从环境变量加载值。我使用--envVars键传递我的环境变量:value。然而,他们并没有被基准所接受。
下面是一些示例代码:
using BenchmarkDotNet.Attributes;
[MemoryDiagnoser]
[ReturnValueValidator(failOnError: true)]
public class RedisBenchmark
{
[GlobalSetup]
public void GlobalSetup()
{
_redisService.Servers = System.Environment.GetEnvironmentVariable(Constants.REDIS_SERVERS) ?? "";
if (string.IsNullOrEmpty(_redisService.Servers)) _redisService.Servers = "NO SERVERS SPECIFIED";
}
private static RedisService _redisService = new();
[Benchmark(Description = "Write and Read to Redis")]
public void WriteAndReadRedis() => _redisService.WriteAndRead();
}请注意上面的“未指定服务器”字符串。当我的RedisService在基准测试升温时运行并输出其连接字符串时,它会输出该字符串,因此我知道GlobalSetup运行,但它无法找到或读取环境变量。
我遗漏了什么吗?
这里还有一些背景和讨论:https://github.com/dotnet/BenchmarkDotNet/issues/2156
发布于 2022-10-20 21:15:41
在本文撰写之时,有一个错误影响到[ReturnValueValidator],看起来它跳过运行GlobalSetup。作为临时修复,您可以删除[ReturnValueValidator],并且它应该可以工作。
https://stackoverflow.com/questions/74146160
复制相似问题