我正在尝试使用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();
}
}
}
答案 0 :(得分:0)
我不确定我理解你的例子,因为事实上你不会使用Moles。
如果你只是想" Mole"我们自己的非虚方法,在测试项目的引用中,您只需右键单击已测试项目的程序集,然后选择添加Moles程序集。这将创建一个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的Moles时,我直接右键单击测试项目的引用,我可以为mscorlib添加Moles Assembly 。那么
using Microsoft.Moles.Framework;
是必需的。