私は現在、Visual Studioで書かれた標準的な単体テストを実行する単体テストフレームワークを作成しています。フレームワークは現在、アクセサーと正しく動作していません。次のテスト方法を検討してください。クラスアクセサのインスタンスを作成する
[TestMethod()]
public void TestMethod()
{
ExampleMethods_Accessor target = null;
target = new ExampleMethods_Accessor();
target.SomeMethod();
}
この例では、アクセサはVisual Studioによって生成されています。 Visual StudioのUnit Testing環境を使用して実行すると、単体テストは正常に動作します。しかし、私は私のフレームワーク内からTestMethod()を呼び出すことを望みます。 "target = new ExampleMethods_Accessor()"行で、次の例外がスローされます。
"Proband.ExampleMethods_Accessor"の型初期化子が例外を送出しました。
内部例外:
は、ファイルまたはアセンブリをロードできませんでした:発端者、バージョン= 1.0.0.0、文化=中立、なPublicKeyToken = nullを...
はどのようにマイクロソフトユニットテストのいずれかのアイデアを持っていますフレームワークは単体テストを呼び出しますか?私はそれが不足しているTestContextオブジェクトのためかもしれないと思っていた。私の場合、これは "null"です。 Visual Studioで単体テストを開始するとき、TestContextオブジェクトには多くの情報が含まれています。私はそれを正しく初期化する必要がありますか?どのように初期化する必要がありますか?すべての助けを
おかげで、 クリスチャン
編集:私はアクセサが作業している方法を試して保管
。私はProband_Accessor.dllにどのようなコードが生成されているかを見るためにILSpyを使用しました。これは、例外を引き起こした命令があることが判明:
[TestMethod()]
[DeploymentItem("Proband.dll")]
public void SomeMethodTest()
{
ExampleMethods_Accessor target = null;
ExampleMethods c = null;
try
{
Assembly.Load("Proband, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); // this works fine
PrivateType tx = new PrivateType(typeof(ExampleMethods)); // this works fine as well (also without loading the assembly)
PrivateType t = new PrivateType("Proband, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "Proband.ExampleMethods"); // this causes the exception
c = new ExampleMethods(); // this works fine
target = new ExampleMethods_Accessor(); // this causes the exception as well
}
catch (Exception ex)
{
Console.WriteLine();
}
int actual;
actual = target.SomeMethod();
}
私は絶対になぜ「新しい、理解していない:私は(単なるテスト用)、このようなことに私のユニットテストコードを修正
SomeClass_Accessor.m_privateType = new PrivateType("Probant, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "Probant.SomeClass");
私のAppDomainにPrivateType(「発端者、バージョンが....」は動作しません。誰も考えていますか?
それが利用できるようにする* 'Proband'アセンブリ、およびどのように*試してみました何ですか? –
あなたは何を書いているのですか? [TestMethod]を使用して、MSTestフレームワークを使用しているようです。何らかのカスタムテスト_runner_を書いていますか? –
ああ、説明しないと申し訳ありません。発案されたアセンブリは、テストすべきコードを含むものです。 ExampleMethodsは、個人的なメソッド( "SomeMethod")を含む発案者アセンブリ内のクラスです。 – Christian