TypeInitializationException при использовании родинок с HtmlAgilityPack - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь использовать родинки для проверки нестатического метода в отдельной сборке.При запуске теста без тега [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();
        }
    }
}

1 Ответ

0 голосов
/ 11 мая 2011

Я не уверен, что понимаю ваш пример, потому что на самом деле вы не используете родинки.

Если вы просто хотите "молить" наш собственный не виртуальный метод, в ссылках вашего тестового проектавам просто нужно щелкнуть правой кнопкой мыши по сборке протестированного проекта и выбрать Добавить сборку родинок .Это создаст ссылку HAPAndMoles.Moles.

Затем добавьте соответствующее использование, и вы можете назвать свой класс "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, я щелкаю правой кнопкой мыши по ссылкам тестового проекта и могу Добавить сборку молей для mscorlib .Тогда

using Microsoft.Moles.Framework;

необходим.

...