Наличие проблемы «not found» с Microsoft.Data.SQLite 3, SQLitePCLRaw и Xunit с таргетингом на net4x - PullRequest
0 голосов
/ 17 октября 2019

(Я открыл похожую проблему на странице GitHub Xunit здесь: https://github.com/xunit/xunit/issues/2037)

Я пытаюсь использовать базу данных SQLite в памяти для целей тестирования. Поэтому, следуя тому, что я собрал здесьи там, в Интернете, я создал тестовый проект Xunit, который использует Microsoft.Data.SQLite и SQLitePCLRaw.bundle_green nugets.

До версии SQLite v2 и версии SQLitePCLRaw v1.x у меня не было никаких проблем. Однако, начиная с SQLite v3 и PCL v2, я не могу заставить что-либо работать. Как только я пытаюсь создать экземпляр соединения, мне выдается Exception с сообщением «not found» со следующей трассировкой стека:

Stack Trace: 
    SqliteConnection.ctor(String connectionString)
    InMemory.CreateConnection() line 81
    UnitTest1.Test1() line 15
    ----- Inner Stack Trace -----
    RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
    RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
    RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
    BundleInitializer.Initialize()
    SqliteConnection.cctor()
    ----- Inner Stack Trace -----
    NativeLibrary.Load(String libraryName, Assembly assy, Int32 flags)
    Batteries_V2.MakeDynamic(String name, Int32 flags)
    Batteries_V2.DoDynamic_cdecl(String name, Int32 flags)
    Batteries_V2.Init()

При попытке найти проблему я создал фиктивные тестовые проекты в Xunit, nUnit и MSTest, а также консольный проект. Я также нацеливаюсь на net48 и netcoreapp3.0 в каждом проекте.

Как выяснилось, проблема возникает только тогда, когда код запускается в ядре тестирования Xunit , в .NET 4.x (работает с ядром dotnet). В любом другом сценарии всеработает как положено. Поэтому мне трудно худетьk что это проблема SQLite больше, чем проблема Xunit.

Код можно найти здесь:

https://github.com/RosairePion/wonderland-csharp-sqlitepclraw

Может кто-нибудь подсказать мне, что происходит? Xunit использует SQLite для внутреннего использования, что вызывает конфликты во время выполнения или что-то в этом роде?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...