Html agility pack 将Moles与HtmlAlityPack一起使用时出现TypeInitializationException

Html agility pack 将Moles与HtmlAlityPack一起使用时出现TypeInitializationException,html-agility-pack,moles,typeinitializeexception,Html Agility Pack,Moles,Typeinitializeexception,我试图用摩尔在一个单独的组件中测试一个非静态方法。在没有[HostType(“Moles”)]标记的情况下运行测试时,测试运行正常。当我更换它时,我收到以下错误: “HtmlAgilityPack.HtmlNode”的类型初始值设定项引发异常。” 我附上了以相同方式执行的代码示例 任何帮助都会很好 单元测试调用的类/方法 using System; using HtmlAgilityPack; using System.Web; namespace HAPAndMoles { publ

我试图用摩尔在一个单独的组件中测试一个非静态方法。在没有[HostType(“Moles”)]标记的情况下运行测试时,测试运行正常。当我更换它时,我收到以下错误:

“HtmlAgilityPack.HtmlNode”的类型初始值设定项引发异常。”

我附上了以相同方式执行的代码示例

任何帮助都会很好

单元测试调用的类/方法

using System;
using HtmlAgilityPack;
using System.Web;

namespace HAPAndMoles
{
    public class Class1
    {
        public void fooBar()
        {
            HtmlDocument foo = new HtmlDocument();
        }
    }
}
using System;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using HAPAndMoles;
using Microsoft.Moles.Framework;
using HtmlAgilityPack;
using System.Web;

namespace HAPAndMoles
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        [HostType("Moles")]
        public void TestMethod1()
        {
            Class1 bar = new Class1();
            bar.fooBar();
        }
    }
}
单元测试

using System;
using HtmlAgilityPack;
using System.Web;

namespace HAPAndMoles
{
    public class Class1
    {
        public void fooBar()
        {
            HtmlDocument foo = new HtmlDocument();
        }
    }
}
using System;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using HAPAndMoles;
using Microsoft.Moles.Framework;
using HtmlAgilityPack;
using System.Web;

namespace HAPAndMoles
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        [HostType("Moles")]
        public void TestMethod1()
        {
            Class1 bar = new Class1();
            bar.fooBar();
        }
    }
}

我不确定我是否理解你的例子,因为事实上你不使用鼹鼠

如果您只想“Mole”我们自己的非虚拟方法,那么在测试项目的引用中,您只需右键单击测试项目的程序集,然后选择“添加Moles程序集”。这将创建一个HAPAndMoles.Moles引用

然后添加相应的using,您可以从M开始调用类“moled”(Class1=>MCLass1)。我向您展示了一个测试MClass1行为的示例:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using HAPAndMoles;
using HAPAndMoles.Moles;

namespace HAPAndMoles {
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        [HostType("Moles")]
        public void TestMethod1()
        {
            bool called = false;
            var bar = new MClass1() 
            {
                fooBar = () => called = true
            };
            ((Class1)bar).fooBar();
            Assert.IsTrue(called);
        }
    }
}
当我想要Moles的mscorlib时,我右键直接点击测试项目的参考,我可以为mscorlib添加Moles组件。然后

using Microsoft.Moles.Framework;

是否可以添加抛出异常的完整堆栈跟踪,而不仅仅是第一行?Jeco。。。谢谢你的信息。我从我的示例中删除了一些内容,以使其达到最小的形式。我的原始代码确实包含了moled代码的使用。在阅读了您的回复之后,我注意到我忽略了为HtmlAgilityPack程序集创建一个mole。