MEF creates trouble for integration tests

#392 · open · 1 comments

View on GitHub ↗

fallwest

I have to fight with MEF on my sever run of unit / integration tests. I have got past not finding the Ado provider with the code sample below but then run up against "SimpleDataException: ``` Simple.Data.SimpleDataException: No System.Data.SqlClient Provider found.. at Simple.Data.MefHelper.Compose[T](String contractName)" ``` Would rather have feature that allows me to circumvent MEF for testing. ``` [ClassInitialize] public static void ClassInitialize(TestContext testContext) { //Hack to avoid strange error that only occurs on automatic test server. //Error message: Simple.Data.SimpleDataException: No Ado Provider found. at Simple.Data.MefHelper.Compose[T](String contractName) var adoAdapter = new AdoAdapter(); adoAdapter.Setup(new { ConnectionString = "Data Source=(local);Initial Catalog=DB;Integrated Security=True;User Instance=False", ProviderName = "System.Data.SqlClient" }); Database.UseMockAdapter(adoAdapter); } ``` I have, of course, added all nuget packages to the test project.

Comments

fallwest

Update: Got this to work with by adding the following class to my test project: ``` using System.ComponentModel.Composition; using Simple.Data.Ado; using Simple.Data.SqlServer; namespace Blabla.AppServer.Integration.Tests { /// <summary> /// Noe spesiell dritt som trengs fordi Simple.Data bruker reflection og MEF som gjør at enhetstester feiler bare på byggserver /// </summary> // ReSharper disable once RedundantExtendsListEntry [Export(typeof(IConnectionProvider))] [Export("System.Data.SqlClient", typeof(IConnectionProvider))] // ReSharper disable once RedundantExtendsListEntry public class ConnectionProvider : SqlConnectionProvider, IConnectionProvider { } } ```