ユニットテストです。純Add-In for Office
質問
でも提案のためのユニットテスト管理アプリケーションの追加のためのオフィスはどうですか?い用途があったか、同じ問題MSTest.
問題はあります。純組み立て込内のオフィスのアプリケーション(私の場合、ワード)が必要で参照するインスタンス。純ます。できないかインスタンスを生成のオブジェクトがるのではなく、そのインスタンスの言います。
今では、ご利用になれます。COMAddIns(名のアドイン").オブジェクトインターフェース参照を取得し、取得したCOMオブジェクトが返されるのRequestComAddInAutomationService.私に行うことができ、かつ、それはそのオブジェクトにおいて代理の方法のためのあらゆる方法を。NETオブジェクトを発信していきたい試験(すべてのセット下の条件-編集なく、公表のバージョン)。
のCOMオブジェクト(VB.NET クラスが実際に参照がインスタンスに追加しただけで帰る途によって素敵p/を呼び出すエラー:
システム。を行います。リモ.RemotingException:このリモプロキシがないのチャネルシンクとは、サーバは登録サーバーのチャンネルを聞き、または本アプリケーションは不適切な顧客チャネルの話になります。です。を行います。リモ.プロキシ.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg,Boolean useDispatchMessage,Int32callType) です。を行います。リモ.プロキシ.RemotingProxy.呼び出し(IMessage reqMsg) です。を行います。リモ.プロキシ.RealProxy.PrivateInvoke(MessageData&msgData,Int32型)
私の主な追加COMの可視域およびエラーの変更
システム。InvalidOperationException:操作は無効でに現在のオブジェクトです。です。RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlagsフラグ、オブジェクト目標をInt32[]aWrapperTypes,MessageData&msgData)
ないが、この仕事と周辺での乱れを多くのテストコードをリアルプロジェクトの代わりに試験のプロジェクトの最初がやりたかっただけで、途ではない。
解決
このようにのんびりと解決します。
べてについてちょうど私の追加に見ることができる場合もありますをクリックし方法ボタンのポートします。変えていったんすべてのクリック手法のみのシンプルparameterlessます。
その後、作成したファイルを保存し、新規ファイル(一部クラス)と呼ばれEntryPointが多かったので非常に短い友達臨たが、通常は電話parameterised労働者の機能、すべてのクリックの方法だというこのファイルです。そのため、たとえば、ある機能を開の標準文書と、"名前を付けて保存"への当社のDMS.のパラメータの文書を開き、カップルでの十数の標準文書として利用します。
くらいなので
Private Sub btnMemo_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles btnMemo.Click
DocMemo()
End Sub
のThisAddinし
Friend Sub DocMemo()
OpenDocByNumber("Prec", 8862, 1)
End Sub
私の新しいEntryPointsファイルです。
私は新しAddInUtilitiesファイルを
公開インタフェースIAddInUtilities
#If DEBUG Then
Sub DocMemo()
#End If
End Interface
Public Class AddInUtilities
Implements IAddInUtilities
Private Addin as ThisAddIn
#If DEBUG Then
Public Sub DocMemo() Implements IAddInUtilities.DocMemo
Addin.DocMemo()
End Sub
#End If
Friend Sub New(ByRef theAddin as ThisAddIn)
Addin=theAddin
End Sub
End Class
というThisAddInファイルを追加
民間光熱費としてAddInUtilities
保護オーバーライド機能RequestComAddInAutomationService()オブジェクトとして 場合は光熱費なし 光熱費=New AddInUtilities(Me) End If 返事 機能を終了
ができる試験のDocMemo機EntryPoints用途から、このように:
<TestFixture()> Public Class Numbering
Private appWord As Word.Application
Private objMacros As Object
<TestFixtureSetUp()> Public Sub LaunchWord()
appWord = New Word.Application
appWord.Visible = True
Dim AddIn As COMAddIn = Nothing
Dim AddInUtilities As IAddInUtilities
For Each tempAddin As COMAddIn In appWord.COMAddIns
If tempAddin.Description = "CobbettsMacrosVsto" Then
AddIn = tempAddin
End If
Next
AddInUtilities = AddIn.Object
objMacros = AddInUtilities.TestObject
End Sub
<Test()> Public Sub DocMemo()
objMacros.DocMemo()
End Sub
<TestFixtureTearDown()> Public Sub TearDown()
appWord.Quit(False)
End Sub
End Class
唯一のことはできませんしユニットテストの実績をクリックし、がんを呼び出してEntryPoints方々からは、ieのRequestComAddInAutomationService面ではなく、イベントハンドラ.
でも本当にうまくいきます。
他のヒント
検討の嘲笑う枠組み NMock, RhinoMocks, など。を偽る行動の事務所。