public SS14UnitTest() { /* * Assembly.getEntryAssembly() returns null because Unit tests * are unmanaged and have no app domain managers. * this causes IOCManager to never load or build any of the types * * Fixed by Setting the Entry assembly values manually here */ Assembly assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); /* end fix */ //ConfigurationManager setup GetConfigurationManager = IoCManager.Resolve <IPlayerConfigurationManager>(); GetConfigurationManager.Initialize("./player_config.xml"); //ResourceManager Setup GetResourceManager = IoCManager.Resolve <IResourceManager>(); InitializeResources(); }
static When_creating_a_headtracker() { var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, Assembly.GetCallingAssembly()); var domainManagerField = AppDomain.CurrentDomain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(AppDomain.CurrentDomain, manager); }
/// <summary> /// Allows setting the Entry Assembly when needed. /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests /// </summary> /// <param name="assembly">Assembly to set as entry assembly</param> public static void SetEntryAssembly(Assembly assembly) { var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); }
private void SetCurrentAssembly() { var assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); }
/// <summary> /// Allows setting the Entry Assembly when needed. /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests /// </summary> /// <param name="assembly">Assembly to set as entry assembly</param> public static void SetEntryAssembly(System.Reflection.Assembly assembly) { #if NET462 AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); #endif }
private static void InitEntryAssembly() { var assembly = Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyField = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyField?.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField?.SetValue(domain, manager); }
public void TestAssemblySetup() { #if NET46 // recent SAP HANA provider uses Assembly.GetEntryAssembly() calls during native dlls discovery, which // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing // https://github.com/microsoft/vstest/issues/1834 // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/ var assembly = Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); #endif // netcoreapp2.1 adds DbProviderFactories support, but providers should be registered by application itself // this code allows to load assembly using factory without adding explicit reference to project RegisterSapHanaFactory(); RegisterSqlCEFactory(); #if !NETCOREAPP2_1 && !AZURE // configure assembly redirect for referenced assemblies to use version from GAC // this solves exception from provider-specific tests, when it tries to load version from redist folder // but loaded from GAC assembly has other version AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { var requestedAssembly = new AssemblyName(args.Name); if (requestedAssembly.Name == "IBM.Data.DB2") { return(DbProviderFactories.GetFactory("IBM.Data.DB2").GetType().Assembly); } if (requestedAssembly.Name == "IBM.Data.Informix") { // chose your red or blue pill carefully //return DbProviderFactories.GetFactory("IBM.Data.Informix").GetType().Assembly; return(typeof(IBM.Data.Informix.IfxTimeSpan).Assembly); } return(null); }; #endif // register test providers TestNoopProvider.Init(); SQLiteMiniprofilerProvider.Init(); }
public void Initialize() { Assembly assembly = Assembly.GetAssembly(GetType()); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); }
public void TestAssemblySetup() { #if !NETSTANDARD1_6 && !NETSTANDARD2_0 && !APPVEYOR && !TRAVIS // recent SAP HANA provider uses Assembly.GetEntryAssembly() calls during native dlls discovery, which // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing // https://github.com/microsoft/vstest/issues/1834 // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/ var assembly = Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); #endif #if !NETSTANDARD1_6 && !NETSTANDARD2_0 && !APPVEYOR && !TRAVIS // configure assembly redirect for referenced assemblies to use version from GAC // this solves exception from provider-specific tests, when it tries to load version from redist folder // but loaded from GAC assembly has other version AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { var requestedAssembly = new AssemblyName(args.Name); if (requestedAssembly.Name == "IBM.Data.DB2") { return(DbProviderFactories.GetFactory("IBM.Data.DB2").GetType().Assembly); } if (requestedAssembly.Name == "IBM.Data.Informix") { // chose your red or blue pill carefully //return DbProviderFactories.GetFactory("IBM.Data.Informix").GetType().Assembly; return(typeof(IBM.Data.Informix.IfxTimeSpan).Assembly); } return(null); }; #endif // register test providers TestNoopProvider.Init(); // disabled for core, as default loader doesn't allow multiple assemblies with same name // https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/assemblyloadcontext.md #if !NETSTANDARD1_6 && !NETSTANDARD2_0 Npgsql4PostgreSQLDataProvider.Init(); #endif }
private static void FixEntryAssembly() { // http://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/ AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType() .GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield?.SetValue(manager, typeof(Startup).Assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType() .GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField?.SetValue(domain, manager); }
public BasicTestsBase() { /* Preparing test start */ Assembly assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); /* Preparing test end */ }
private static void SetEntryAssembly <T>() { Assembly assembly = typeof(T).Assembly; var manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); }
private static void SetEntryAssembly() { // Ensures that Assembly.GetEntryAssembly() does not return null when running unit tests // See: http://stackoverflow.com/a/21888521/3628232 var assembly = Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); }
public BaseTest() { // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/ // https://stackoverflow.com/a/21888521/ /* Preparing test start */ Assembly assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); /* Preparing test end */ }
/// <summary> /// Allows setting the Entry Assembly when needed. /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests /// </summary> /// <param name="assembly">Assembly to set as entry assembly</param> public static void Inject(Assembly assembly = null) { assembly = assembly ?? Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); if (entryAssemblyfield != null) { entryAssemblyfield.SetValue(manager, assembly); } var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); if (domainManagerField != null) { domainManagerField.SetValue(domain, manager); } }
public BaseTest() { //in case multi target project,use #if because no appdomain in netcore #if !NETCOREAPP /* Preparing test start */ Assembly assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType() .GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield?.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType() .GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField?.SetValue(domain, manager); /* Preparing test end */ #endif }
static void SapHanaSPS04Fixes() { // recent SAP HANA provider (SPS04 040, fixed in 045) uses Assembly.GetEntryAssembly() calls during native dlls discovery, which // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing // https://github.com/microsoft/vstest/issues/1834 // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/ try { var assembly = Assembly.GetCallingAssembly(); var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); } catch { /* ne shmagla */ } }
/// <summary> /// Allows setting the Entry Assembly when needed. /// Use SetEntryAssembly() only for tests /// </summary> /// <param name="assembly">Assembly to set as entry assembly</param> public static void SetEntryAssembly(Assembly assembly) { if (Assembly.GetEntryAssembly() != null) { return; } #if NET461 var manager = new AppDomainManager(); var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); if (entryAssemblyfield != null) { entryAssemblyfield.SetValue(manager, assembly); } var domain = AppDomain.CurrentDomain; var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); if (domainManagerField != null) { domainManagerField.SetValue(domain, manager); } #endif }
public virtual void Init() { #if NET452 Assembly assembly = Assembly.GetCallingAssembly(); AppDomainManager manager = new AppDomainManager(); FieldInfo entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic); entryAssemblyfield.SetValue(manager, assembly); AppDomain domain = AppDomain.CurrentDomain; FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic); domainManagerField.SetValue(domain, manager); #endif var config = CfgUtils.LookupDefaultConfigs(); var serviceOptions = new ServiceOptions(); var exchangeSection = config.GetSection("Exchange"); var serviceOptionSection = exchangeSection.GetSection("Service"); serviceOptionSection?.Bind(serviceOptions); CfgUtils.SetupIoC(config); ProcessDataService <Task> .Configuration = config; ImportDataService <Task> .Configuration = config; ExportDataService <Task> .Configuration = config; }