Ошибка лицензии при использовании Benchmark.NET + DevArt dotConnect для PostgreSQL

Я работаю над приложением, состоящим из нескольких проектов, и использую EntityFramework с dotConnect для работы с PostgreSQL. У меня также есть лицензия на dotConnect, которая успешно работает в основном приложении.

Параллельно я создаю консольное приложение (другое решение), используя Benchmark.Net для измерения производительности логики одного из проектов. Но каждый раз, когда я запускаю тест, я получаю ошибку ниже:

System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.Data.Entity.Core.EntityException: базовый поставщик не удалось открыть. ---> Devart.Data.PostgreSql.PgSqlException: сборка, содержащая встроенную лицензию dotConnect для PostgreSQL, не может использоваться с этим приложением: 0f238e83-669a-46b8-876f-40331880ee79.exe.exe.

Следуя этой инструкции, я уже сгенерировал licenses.licx через Visual Studio и <exe file>.licenses с помощью lc.exe, Но он все еще производит ту же ошибку.

Я подозреваю, что тот факт, что Benchmark.NET генерирует собственный exe-файл для запуска теста, вызывает эту ошибку, но я не уверен на 100%. Так что я ищу решение, если у кого-нибудь есть такое?

Спасибо

1 ответ

Решение

Я не уверен, что это хорошая идея - создать эталонный тест для кода, который выполняет вызовы базы данных и т. Д. Тогда вы тестируете не код, а всю систему: файловую систему, драйверы базы данных, возможные взаимодействия и т. Д. на.

Это не идея BenchmarkDotNet. На самом деле он создан для сравнительного анализа сравнительно небольших задач, связанных с ЦП, для поиска узких мест и оптимизации на основе измерений.

Однако, если вы все еще хотите это сделать, решение может состоять в том, чтобы запустить тестовый процесс внутри консольного приложения, которое вы создали, без создания специальных сборочных тестов.

Для этого используйте [InProcess] приписывать. Просто примените его к своему стандартному классу вместо обычных атрибутов работы:

[InProcess]
public class TypeWithBenchmarks
{
    [Benchmark]
    public void BenchmarkedMethod()
    {
    }
}
Другие вопросы по тегам