我的应用程序有3层(WebProject,UnitTestProject和CoreProject),使用模拟框架进行单元测试,在哪里放置Moq dll?
答案 0 :(得分:0)
我从问题标题中假设您打算使用Moq,但其他框架的理论基本相同
您可以使用Nuget将moq安装到UnitTestProject
其他任何一层都不应该知道嘲笑或嘲笑,例如你的图层会有一个IThing,Mock会满足那个界面。
UnitTestProject
[Test]
public void Test()
{
var mock = new Mock<IThing>();
// set ups
var sut = new ThingHandler();
sut.Act(mock.Object);
// Assert
}
核心项目
public ThingHandler
{
public result Act(IThing input)
{
//do stuff to an IThing
}
}
正如您可以看到核心项目,不需要知道什么是令人满意的IThing界面。
答案 1 :(得分:0)
您应该将所有模拟dll放在UnitTestProject
本身而不是其他地方。例如,如果您使用MS Moles和Pex框架进行模拟;一旦你右键点击一个dll并选择创建鼹鼠,它就会自动创建并将模拟/ moled dll放在你的 Reference 文件夹中。
此外,您的其他项目/图层与那些被嘲笑的dll没有业务,所以他们不应该知道相同的。