![](/img/trans.png)
[英]"Wrong assembly binding redirects" when running BenchmarkDotNet
[英]Running BenchmarkDotNet within XUnit
我在我的項目(web api,VS2019)和 XUnit 2.4.1 中使用 .NET Core 3.1。 最近我在考慮添加一些性能測試,我遇到了這個庫 - BenchmarkDotNet 。 由於我已經將 XUnit 用於其他測試,因此我想從 XUnit [Fact]s 中運行BenchmarkDotNet 。
我發現這篇文章解釋說必須為 xunit 關閉程序集的影子副本。 所以我嘗試了以下操作:
[SimpleJob(RuntimeMoniker.NetCoreApp31)]
[MinColumn, MaxColumn, MedianColumn, KurtosisColumn]
[HtmlExporter]
public class TestScenarios
{
[Params("test")]
public string TextToHash { get; set; }
[Benchmark]
public string CalculateSha256()
{
var engine = SHA256.Create();
var hash = engine.ComputeHash(Encoding.ASCII.GetBytes(TextToHash));
return Encoding.ASCII.GetString(hash);
}
}
然后在Program.cs我有:
class Program
{
static void Main(string[] args)
{
BenchmarkRunner.Run<TestScenarios>();
}
}
在Release 中編譯和運行應用程序時,我驗證了BenchmarkDotNet.Artifacts文件夾與日志和基准輸出文件是否正確創建。
public class DotNetBenchmarkTest
{
[Fact]
public void TestMethod()
{
BenchmarkRunner.Run<TestScenarios>();
}
}
同樣在發布配置中構建並從測試資源管理器運行此方法將在bin/Release/dotnetcoreapp3.1/ 中創建BenchmarkDotNet.Artifacts文件夾,但日志文件為空。
{
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
"shadowCopy": false,
"methodDisplay": "classAndMethod",
"diagnosticMessages": true
}
但似乎對行為沒有影響 - 我驗證了文件xunit.runner.json已復制到輸出 bin 目錄(屬性->復制到輸出目錄->始終復制)。
xunit .\path\assembly-name.dll -noshadow
再次沒有運氣。 我在此github 鏈接中找到的選項-noshadow 。 似乎該選項在舊版本中可用,但未列出我對xunit 控制台運行程序 v2.4.1 的幫助輸出,但我試了一下。
所以我的問題是是否有可能讓 DotNetBenchmarkTest 與 XUnit 一起工作,如果是這樣,你能指出我做錯了什么嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.