J'ai récemment commencé à apprendre NH Fluent, et j'ai quelques problèmes avec cette méthode de test. Cela prend une éternité à courir (cela fait maintenant plus de dix minutes qu'il fonctionne et aucun signe de progrès ...).Test de cartographie NHibernate Fluent prend une éternité
[TestMethod]
public void Entry_IsCorrectlyMapped()
{
Action<PersistenceSpecification<Entry>> testAction = pspec => pspec
.CheckProperty(e => e.Id, "1")
.VerifyTheMappings();
TestMapping<Entry>(testAction);
}
avec cette méthode d'aide (un peu simplifié - j'ai deux ou trois blocs try/catch aussi, pour fournir plus agréables messages d'erreur):
public void TestMapping<T>(Action<PersistenceSpecification<T>> testAction) where T : IEntity
{
using (var session = DependencyFactory.CreateSessionFactory(true).OpenSession())
{
testAction(new PersistenceSpecification<T>(session));
}
}
La méthode DependencyFactory.CreateSessionFactory()
ressemble à ceci:
public static ISessionFactory CreateSessionFactory(bool buildSchema)
{
var cfg = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory())
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(Entry).Assembly));
if (buildSchema)
{
cfg = cfg.ExposeConfiguration(config => new SchemaExport(config).Create(false, true));
}
return cfg.BuildSessionFactory();
}
J'ai essayé le débogage, mais je ne peux pas savoir où est le goulot d'étranglement. Pourquoi cela prend-il si longtemps?
Depuis combien de temps est 'long'? Et combien de mappages dans le périmètre? –
J'ai dit dix minutes, mais maintenant ça fait plus d'une demi-heure - et le testeur dit encore "En cours ...". Jusqu'à présent, seulement deux cartographies - et les deux sont très simples. –