Битва с конфигом

Разработка на C# под linux
 
Иногда бывает желание протестировать простой код.

Код такой:
var cs = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var providerName = cs.ProviderName;
var factory = DbProviderFactories.GetFactory(providerName);

Для того, чтобы этот код работал, к программе должен прилагаться файл app.config, который кем-то (кстати, кем?) переименовывается в MyApp.exe.config во время сборки.

Для того, чтобы этот код протестировать, создаётся .dll-ка с unit-тестами и запускается через nunit3-console:
nunit3-console MyTestDll.dll
NUnit запускает для теста отдельный процесс, а внутри создает отдельный AppDomain для этой .dll-ки
и загружает MyTestDll.dll.config

это в теории. А на практике:
# nunit3-console
bash: nunit3-console: command not found

# cat /usr/bin/nunit
#!/bin/sh
exec mono /usr/share/nunit-3//nunit-console.exe "$@"

в monodevelop:
вызываем контекстное меню на узле Solution в окне Solution Explorer:
Add-new-project.png
выбираем тип проекта "NUnit Library Project"
Choose-a-template-for-your-new-project.png
жмём "Next"
Вводим название проекта в поле "Project Name:"
Configure-your-new-project.png
жмём "Create"

В полученном из шаблона проекте используется пакет (package) NUnit 2.6.3 (проапдейтим до 2.6.4)

Заготовка кода такая:
using NUnit.Framework;
using System;

namespace AdoNetConnectionTest.NUnit
{
    [TestFixture ()]
    public class Test
    {
        [Test ()]
        public void TestCase ()
        {
        }
    }
}

Добавляем код, запускаем, получаем
System.NullReferenceException : Object reference not set to an instance of an object
добавляем конфиг
System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.
System.Configuration.ConfigurationErrorsException : Failed to find or load the registered .Net Framework Data Provider.

https://msdn.microsoft.com/en-us/library/a6cd7c08(v=vs.110).aspx
Implementing a .NET Framework Data Provider
Creating a .NET Framework Data Provider Library
Sample .NET Framework Data Provider

# gacutil -l deveeldb
The following assemblies are installed into the GAC:
deveeldb, Version=2.0.0.31533, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Number of items = 1

<configuration>
    <system.data>
        <DbProviderFactories>
            <add invariant="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" name="MySQL Data Provider" description=".Net Framework Data Provider for MySQL" />
            <add invariant="Deveel.Data.Client.DeveelDBClient" type="Deveel.Data.Client.DeveelDBClientFactory,deveeldb, Version=2.0.0.31533, Culture=neutral, PublicKeyToken=0738eb9f132ed756 name="DeveelDB Data Provider" description=".Net Framework Data Provider for DeveelDB" />
        </DbProviderFactories>
    </system.data>
</configuration>

System.InvalidOperationException : The requested .Net Framework Data Provider's implementation does not have an Instance field of a System.Data.Common.DbProviderFactory derived type.