Я использую. NET Core 3.1 в моем проекте (web api, VS2019) и XUnit 2.4.1. Недавно я подумывал добавить несколько тестов производительности и наткнулся на эту библиотеку - BenchmarkDo tNet. Поскольку я уже использовал XUnit для других тестов, я хотел запустить BenchmarkDo tNet из XUnit [Fact] s .
Я нашел это post , где объясняется, что теневые копии сборок должны быть отключены для xunit. Поэтому я попытался сделать следующее:
- Для простоты я создал fre sh new . net core 3.1 проект консольного приложения с примером метода, который я хотел сравнить:
[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>();
}
}
При компиляции и запуске приложения в Выпуск Я подтвердил что папка BenchmarkDo tNet .Artifacts с выходными файлами журнала и тестами была создана правильно.
Я добавил проект XUnit в решение и создал простой
[Факт] метод:
public class DotNetBenchmarkTest
{
[Fact]
public void TestMethod()
{
BenchmarkRunner.Run<TestScenarios>();
}
}
Также встраиваем в конфигурацию Release и запуск этого метода из тестового обозревателя создаст папку BenchmarkDo tNet .Artifacts в bin / Release / dotnetcoreapp3.1 / , но файлы журналов пусты.
Я также пытался добавить
xunit.runner. json файл со следующим содержимым в root моего проекта XUnit:
{
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
"shadowCopy": false,
"methodDisplay": "classAndMethod",
"diagnosticMessages": true
}
, но похоже, не влияет на поведение - я проверил, что файл xunit.runner. json скопирован в каталог выходного бина (Свойства-> Копировать в выходной каталог-> Копировать всегда).
Я также установил
xUnit. net Console Runner v2.4.1 и попытался запустить тесты с консоли:
xunit .\path\assembly-name.dll -noshadow
Опять не повезло. Опцию -noshadow Я нашел по этой ссылке github . Похоже, что опция была доступна в более старой версии, но в списке нет моей справочной информации для xunit console runner v2.4.1 , но я попробовал.
Так что мой вопрос: можно заставить работать DotNetBenchmarkTest вместе с XUnit, и если да, можете ли вы указать мне, что я делаю неправильно?