Sto utilizzando una personalizzazione AutoFixture per testare un repository che accede a un DB di SQL Compact.Richiama il metodo Dispose sulla personalizzazione di AutoFixture
Sarebbe molto utile per me cancellare questo database non appena il test è completato. Poiché il db viene creato nel costruttore di personalizzazione, penso che il posto migliore per eliminarlo sia nel metodo di smaltimento.
Il codice che sto pensando è:
internal class ProjectRepositoryCustomization : ICustomization
{
private readonly String _dbLocation;
public ProjectRepositoryCustomization()
{
var tempDbLocation = Path.Combine(Path.GetTempPath(), "TempDbToDelete");
if (!Directory.Exists(tempDbLocation))
{
Directory.CreateDirectory(tempDbLocation);
}
_dbLocation = Path.Combine(tempDbLocation, Guid.NewGuid().ToString("N") + ".sdf");
}
public void Customize(IFixture fixture)
{
DataContextConfiguration.database = _dbLocation;
var dataContextFactory = new BaseDataContextFactory();
var projRepository = new ProjectRepository(dataContextFactory);
fixture.Register(() => projRepository);
}
public void Dispose()
{
if (File.Exists(_dbLocation))
{
File.Delete(_dbLocation);
}
}
}
è possibile fare qualcosa di simile?
'DisposableTrackingCustomization' in AutoFixture può essere utilizzato in vari modi e gestisce roba simile a questa (date un'occhiata al suo impl) Quale framework di test (avere hack per xUnit che salva avendo usato un' using' e/o calling' Fixture.Dispose())? Utilizzando AutoFixture.xUnit.net? Vedi anche https://github.com/AutoFixture/AutoFixture/issues/17 –