Sto utilizzando Entity Framework Core 2.0-preview1
con InMemory 2.0-preview1
. Ogni classe di test di unità eredita una classe usa e getta che crea un nuovo database in memoria che i suoi genitori possono utilizzare.
public Constructor()
{
var services = new ServiceCollection();
services.AddEntityFrameworkInMemoryDatabase()
.AddDbContext<DBContext>(o => o.UseInMemoryDatabase("Test"));
var serviceProvider = services.BuildServiceProvider();
Context = serviceProvider.GetRequiredService<DBContext>();
}
Il problema con il dare un nome al database è che non può essere condiviso su più test e quindi ogni test crea un nuovo contesto, con il risultato che ogni test di unità durerà pochi secondi, il che è inaccettabile per il mio server di build. Non riesco a trovare molta documentazione sul perché questo è stato cambiato in 2.0 o come superare questo. Ho provato a utilizzare il nuovo .UseTransientInMemoryDatabase
ma sembra che non cambi nulla. Grazie in anticipo.
Ho usato un dispositivo xUnit per fornire tutte le mie istanze di test con il contesto del database di salvataggio. In questo modo evito l'overhead di creazione del contesto su ciascun test che accelera il build server di un ampio margine.