我需要为应用程序定义性能计数器。我写了几个单元测试,以确保他们按预期工作。我有一个针对每种不同计数器类型的测试类,如AverageCounterTest(AverageCount64
)或InstantaneousCounterTest(NumberOfItems64
)或RateCounterTest(RateOfCountsPerSecond64
)。当我单独运行它们时,它们会通过。如果我一起运行它们,由于计数器报告0
值,大多数都会失败。
对于NumberOfItems64
:
counter.NextValue(); // sample first and reset the counter
int someValue = random.Next(int.MaxValue);
counter.IncrementBy(someValue);
float expected = someValue;
Assert.AreEqual(expected, counter.NextValue());
另一个例子可能是RateOfCountsPerSecond64
:
counter.NextValue(); // sample first and reset the counter
counter.IncrementBy(1);
Thread.Sleep(2000);
float expected = 1 / (float)2;
Assert.IsTrue(expected, counter.NextValue());
可能导致计数器报告0
的原因是什么?我在每个测试中使用不同的性能计数器类别(随机Guid)来隔离它们。