簡體   English   中英

NUnit 測試錯誤:無法從程序集 'System.Web,版本 = 4.0.0.0 加載類型 'System.Web.HttpApplication'

[英]NUnit Test Error: Could not load type 'System.Web.HttpApplication' from assembly 'System.Web, Version=4.0.0.0

我試圖搜索這個,但提供的解決方案似乎對我不起作用。 我有一個現有的 C# Class 庫項目,目標是當前正在運行的.Net Framework 4.5.1。 我想介紹使用 NUnit 進行單元測試。 因此,我在解決方案中添加了 NUnit Test Project(.Net Core 3.1)。 我在 NUnit 項目中添加了對 .Net Framework 4.5.1 的引用,構建后看起來不錯。 但是,我在下面創建了一個簡單的測試,當我運行時出現錯誤

Test
   Duration: 208 ms

  Message: 
    System.TypeLoadException : Could not load type 'System.Web.HttpApplication' from assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
  Stack Trace: 
    RuntimeAssembly.GetExportedTypes()
    Assembly.get_ExportedTypes()
    ExtensionsForAssembly.GetNinjectModules(Assembly assembly)
    <>c.<Load>b__25_0(Assembly asm)
    SelectManySingleSelectorIterator`2.ToList()
    Enumerable.ToList[TSource](IEnumerable`1 source)
    KernelBase.Load(IEnumerable`1 m)
    KernelBase.Load(IEnumerable`1 assemblies)
    ModuleLoadExtensions.Load(IKernel kernel, Assembly[] assemblies)
    DirectRewardsController.ctor() line 24
    DirectRewardsTests.Test() line 18

NUnit 測試

public class DirectRewardsTests
    {
        [SetUp]
        public void SetUp()
        {

        }

        [Test]
        public void Test()
        {
            //Arrange
            DirectRewardsController directRewards = new DirectRewardsController(); 
            //Act

            //Assert
            Assert.Pass();
        }
    }

直接獎勵控制器

public class DirectRewardsController : ApiController
    {
        StandardKernel DependencyKernel;
        
        private IDirectRewards justRewards;
        public DirectRewardsController()
        {
            DependencyKernel = new StandardKernel();
            DependencyKernel.Load(Assembly.GetExecutingAssembly());
            justRewards = DependencyKernel.Get<IDirectRewards>();
        }
        
         public HttpResponseMessage AddMember(MemberRequest model)
        {
            try
            {
                //Add Member record
            }
            catch (Exception ex)
            {
                return new HttpResponseMessage { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(ex.Message) };
            }
        }
    }

我認為您的錯誤來自於測試項目是 .NET Core 3.1,而您正在測試的項目使用 .NET Framework 4.5.1。

您是否有理由不想為測試使用與您正在測試的項目相同的運行時?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM