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();
}

}
}
}

今、私は以下のように上記のクラスの単体テストを作成しています (これが可能かどうか疑問に思っています ) :このコードがテストされることを期待しています。

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 に答える