0

我需要帮助,因为我对痣很陌生,我有以下代码:

namespace A.BusinessLayer
{
sealed class AManager
{
void Method1(object obj){
// do something

}

}

public class B
{
void Method1(object obj){
if some thing{
AManager a=new AManager();
a.Method1();
}

}
}
}

现在我正在为上述类创建单元测试,如下所示(想知道这是否可能): 解释:当调用 B.Method1 时,我只是不想检查是否从实现中调用了 A.Method1,这就是我只是希望这段代码能够测试。

namespace A.Tests
{
 class BTest
{
void Method1Test(){
//I need something like
A.BusinessLayer.Moles.MAManager t=new A.BusinessLayer.Moles.MAManager();
t.Method1=(obj)=>{
Assert.IsTrue(true);
};
B=new B();
B.Method1();

//Assert.IsTrue(true);

}

}
}

我在 A.BusinessLayer 项目的 AssemblyInfo 类中添加了以下属性:

[assembly: InternalsVisibleTo("A.BusinessLayer.Moles")]
[assembly: InternalsVisibleTo("A.BusinessLayer.Tests")]

问题是我看不到 AManger 课程的任何痣吗?

任何有助于改进我的方法的帮助都会受到重视。

更新:我在 *moles.xml 文件中看到类 AManager,但无法通过对象浏览器在 A.BusinessLayer.Moles dll 中看到它

4

1 回答 1

0

在用显示器敲了我的头一段时间后,它终于开始工作了。这是我所做的:

您需要清理测试项目,然后再次构建它

希望这对遇到同样问题的人有所帮助。

至于考虑的方法,我正在使用以下代码:

namespace A.Tests
{
 class BTest
{
void Method1Test(){
bool isMethodInvoked=false;
A.BusinessLayer.Moles.MAManager.AllInstances=()=>{
isMethodInvoked=true;
};

B=new B();
B.Method1();

Assert.IsTrue(isMethodInvoked, "Method is not invoked");

}

}
}
于 2013-06-24T16:34:53.140 回答