有办法将单元测试与BenchmarkDotNet结合起来吗?我的想法是,我希望能够使用AAA模式编写单元测试。但是,当使用dotnetBenchmark作为基准测试运行它时,我希望能够不包括基准测试的安排和断言部分(不要将它包含在正在进行基准测试的代码中,因为安排和行为与实际代码的执行无关)。通过这样对我的“单元测试”进行基准测试,我将不需要编写单独的基准测试和单元测试,而是能够将它们建立在彼此的基础上(不需要重复安排或操作)。
发布于 2022-11-18 14:07:04
BenchmarkDotNet无法只执行已编译代码的选定部分,而且不建议将基准测试视为单元测试。
下面是我在为微基准设计准则团队创建的.NET中所写的关于这个问题的文章:
在编写单元测试时,我们理想地希望测试给定类型的所有方法和属性。我们也测试快乐和不快乐的道路。每次单元测试运行的结果都是一个值:已通过或失败。基准是不同的。首先,基准测试运行的结果从来不是一个值。它是一个整体分布,用均值、标准差、最小值、最大值等来描述。要获得有意义的发行版,基准测试必须执行很多次。,,这需要很长时间。使用dotnet/Performance存储库中的当前推荐设置,运行单个基准测试平均需要6秒。.NET标准2.0API的公共面有成千上万种方法。如果每个公共方法都有一个基准,那么运行这些基准需要两天半的时间。更不用说分析结果、过滤假阳性等所需的时间了。这只是编写基准与编写单元测试不同的原因之一。基准测试的目标是测试所有经常使用的方法(热门路径)的性能,并进行性能测试。的重点应该是最常见的用例,而不是边缘案例。
https://stackoverflow.com/questions/74483598
复制相似问题