私が知る限り、Visual Studio 2012はプライベートアクセサをサポートしていません。可能な選択肢に関する情報をいくつか教えてもらえますか? PrivateObject.Invoke()は私にとって最善の解決策ではありません。Visual Studio 2012のプライベートアクセサリー
ありがとうございます!
私が知る限り、Visual Studio 2012はプライベートアクセサをサポートしていません。可能な選択肢に関する情報をいくつか教えてもらえますか? PrivateObject.Invoke()は私にとって最善の解決策ではありません。Visual Studio 2012のプライベートアクセサリー
ありがとうございます!
メンバーを「内部」としてマークし、InternalsVisibleTo属性を使用します。シンプルで使い勝手の良いタイプです。
多分、この投稿はHome-made Private Accessor for Visual Studio 2012+で、あなた自身のプライベートアクセサを作成するのに役立ちます。
よろしく、
ステファン
MSDNフォーラムのAxel MayerによるコマンドラインツールPublicize.exe(http://msdn.microsoft.com/en-us/library/dd569957%28v=vs.100%29.aspx)のヒントが見つかりました(http: //social.msdn.microsoft.com/Forums/en-US/015e1ac7-acf3-4d83-ae0c-734c8957cde4/how-to-create-private-accessors-in-vs-2012?forum=vsunittest)。 VS 2012とVS 2013(Ultimate)で見つけました。 .NET 4.0と.NET 4.5では動作しましたが、Windowsストアアプリケーションでは動作しませんでした。 %Program Files(x86)%\ Microsoft Visual Studio 11.0 \ Common7 \ IDEを見てください。 ツールは、ユニットテストプロジェクトで使用できるdllを作成します。アクセサーを自分で書くよりも良い;-) – Stefan
私はnugetパッケージChaining Assertion for MSTestの一部であり、私はそれでかなり満足していダイナミックプライベートアクセサ機能を使用して開始しました。 1つは強い型付けを失いますが、少なくとも構文は判読可能です。 ダイナミックの機能で動作します。他のテストフレームワーク用のパッケージもあります。 テストコードは次のようになります。
var target = CreateMyObjectUnderTest();
dynamic dynamicTarget = target.AsDynamic();
Assert.AreEqual("abc", dynamicTarget.MyPrivateProperty);
Assert.AreEqual("xyz", dynamicTarget.PrivateMethod(123));
私はPrivat eAccessorsが導入される前にこれを行っています。ありがとう! – llasarov
多くの.NET FrameworkアセンブリがReflectorのInternalsVisibleTo属性を示しているのは興味深いことです。 – bryanbcook
Fakesフレームワークに問題があるようです。 InternalsVisibleToが正しく設定されていても、内部クラスをシムできません。 PrivateObject.Invokeは実際にはオプションでもありません。残念なことに、アクセサーのサポートを削除する際に、内部クラスをシミングするための方法の1つを削除しました。 – Finster