Der parallele Unit-Test mit Effort und SQL CE schlägt fehl

Ich bewerte Unit-Tests mit EF6 in Kombination mit

http://effort.codeplex.com/ undSQL CE Server (lokale DB-Datei)

http://www.codeproject.com/Articles/460175/Two-strategies-for-testing-Entity-Framework-Effort War eine ganz gute Referenz, aber jetzt stecke ich fest.

Ich habe 2 Testprojekte (eines für Effort und das andere für SQL CE). Wenn ich beide getrennt laufen lasse, ist alles in Ordnung. Wenn Sie mit dem ReSharper-Testläufer beide in einer Reihe ausführen, schlägt das letzte Testprojekt immer fehl. Entweder

System.InvalidOperationException: Das Entity Framework verwendete bereits eine DbConfiguration-Instanz, bevor versucht wurde, einen 'Loaded'-Ereignishandler hinzuzufügen. 'Geladene' Ereignishandler können nur beim Start der Anwendung hinzugefügt werden, bevor das Entity Framework verwendet wird.

oder

System.InvalidOperationException: Die Standardinstanz DbConfiguration wurde von Entity Framework verwendet, bevor versucht wurde, eine Instanz von 'SqlCeConfiguration' festzulegen. Die Instanz 'SqlCeConfiguration' muss beim Anwendungsstart festgelegt werden, bevor Entity Framework-Funktionen verwendet werden können, oder sie muss in registriert sein Die Konfigurationsdatei der Anwendung.

Es ist immer das Gleiche. Der Nachfolger erbt die DbConfiguration-Instanz vom Vorgänger.Wie kann ich beide Testprojekte / Konfigurationen ohne Nebenwirkungen ausführen?

Hier ist meinsDbContext Klasse:

public class DataContext : DbContext
{
    public DataContext(string connectionString) : base(connectionString)
    { Configuration.LazyLoadingEnabled = false; }

    public DataContext(DbConnection connection) : base(connection, true)
    { Configuration.LazyLoadingEnabled = false; }
}

Das ist die Testvorrichtung mitAnstrengung:

[TestFixtureSetUp]
public void TestFixtureSetup()
{
    EffortProviderConfiguration.RegisterProvider();
    var connection = DbConnectionFactory.CreateTransient();
    var dbContext = new DataContext(connection);
    ...
}

Das ist die Testvorrichtung mitSQL CE:

[TestFixtureSetUp]
public void TestFixtureSetup()
{
    const string filePath = @"LocalDb.sdf";
    var connectionString = string.Format("Data Source={0}; Persist Security Info=False;", filePath);
    DbConfiguration.SetConfiguration(new SqlCeConfiguration());

    var dbContext = new DataContext(connectionString);
    dbContext.Database.Create();
    ...
}

und das meineSqlCeConfiguration:

public class SqlCeConfiguration : DbConfiguration
{
    public SqlCeConfiguration()
    {
        SetProviderServices(SqlCeProviderServices.ProviderInvariantName, SqlCeProviderServices.Instance);
        SetDefaultConnectionFactory(new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"));
    }
}

Ich danke dir sehr!

Marcel

Antworten auf die Frage(2)

Ihre Antwort auf die Frage