.NET NUnit テスト - Assembly.GetEntryAssembly() が null です 質問する

.NET NUnit テスト - Assembly.GetEntryAssembly() が null です 質問する

Assembly.GetEntryAssembly()クラスが単体テストで実行される場合、Assembly.GetEntryAssembly()は ですnull

Assembly.GetEntryAssembly()ユニットテスト中に定義する方法のオプションはありますか?

ベストアンサー1

で指定されたSetEntryAssembly(Assembly assembly)メソッドを実装します。

http://frostwave.googlecode.com/svn-history/r75/trunk/F2DUnitTests/Code/AssemblyUtilities.cs

ユニットテスト プロジェクトに追加します。

         /// <summary>
        /// Use as first line in ad hoc tests (needed by XNA specifically)
        /// </summary>
        public static void SetEntryAssembly()
        {
            SetEntryAssembly(Assembly.GetCallingAssembly());
        }

        /// <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)
        {
            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);
        }

おすすめ記事