【问题标题】:TypeInitializationException When Using Moles With HtmlAgilityPack将 Moles 与 HtmlAgilityPack 一起使用时出现 TypeInitializationException
【发布时间】:2011-05-11 03:50:13
【问题描述】:

我正在尝试使用 Moles 在单独的程序集中测试非静态方法。在没有 [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();
        }
    }
}

【问题讨论】:

  • 您能否添加抛出异常的完整堆栈跟踪,而不仅仅是第一行?

标签: html-agility-pack moles typeinitializeexception


【解决方案1】:

我不确定我是否理解您的示例,因为实际上您不使用 Moles。

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

然后添加相应的 using,您可以将您的类称为“moled”,以 M 开头(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);
        }
    }
}

当我想要 mscorlib 的 Moles 时,我直接右键单击测试项目的引用,我可以 为 mscorlib 添加 Moles 组件。那么

using Microsoft.Moles.Framework;

需要。

【讨论】:

  • Jeco ...感谢您提供的信息。我在示例中遗漏了一些内容以使其最小化。我的原始代码确实包括了对恶意代码的利用。阅读您的回复后,我注意到我忽略了为 HtmlAgilityPack 程序集创建一个痣。
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2021-02-28
  • 2017-10-19
相关资源
最近更新 更多